RulesEngine es un paquete de biblioteca/NuGet utilizado para abstraer la lógica de negocio/reglas/políticas del sistema. Esto puede funcionar de forma muy sencilla al permitirte colocar las reglas en almacenamiento fuera de la lógica central del sistema, asegurando que cualquier cambio en las reglas no afecte al sistema central.
Escenarios aplicables:
- El número de tipos de entrada y salida es relativamente fijo, pero la lógica de ejecución cambia con frecuencia.
- las condiciones de conmutación cambian con frecuencia y se sustituyen las sentencias complejas de conmutación;
- lógica de negocio con múltiples condiciones o reglas que cambiarán;
- Escenarios en los que la libertad de reglas no requiere grados particularmente altos de libertad. (En este caso, se recomienda un motor de scripting)
Las reglas de RulesEngine se almacenan en JSON, y las reglas (Reglas) se expresan en expresiones lambda.
Dirección de GitHub:El inicio de sesión del hipervínculo es visible.
Dirección del documento:El inicio de sesión del hipervínculo es visible.(Personalmente, creo que la documentación es un poco vaga y algunos usos no se explican con mucha claridad)
Primero, crea un nuevo proyecto de consola .NET Core 3.1 y utiliza el comando nuget para instalar el paquete, de la siguiente manera:
Crea un nuevo archivo de reglas :Rules.json configura para copiar al directorio de salida.
La configuración es la siguiente:
Prueba a ejecutar el programa y la salida es la siguiente:
El flujo de trabajo customTest llamará a nuestra función C# para validar las reglas; ten en cuenta que al instanciar el objeto RulesEngine, necesitamos añadir ReSettings para ejecutar nuestro método C# con normalidad.
Entre ellos,Los conjuntos de validación son más abstractos de entender, usará localParams, la palabra clave de la variable local es localParams, que puede entenderse simplemente como var name = expresión
El código completo es el siguiente:
Descarga del código fuente:
Turistas, si queréis ver el contenido oculto de esta publicación, por favor Respuesta
|