O RulesEngine é um pacote de biblioteca/NuGet usado para abstrair lógica de negócios/regras/políticas do sistema. Isso pode funcionar de forma muito simples, permitindo que você coloque regras em armazenamento fora da lógica central do sistema, garantindo que quaisquer mudanças nas regras não afetem o sistema central.
Cenários aplicáveis:
- O número de tipos de entrada e saída é relativamente fixo, mas a lógica de execução muda frequentemente.
- as condições de switch mudam frequentemente, e as instruções de switch complexas são substituídas;
- lógica de negócios com múltiplas condições ou regras que vão mudar;
- Cenários em que a liberdade de regras não exige graus particularmente altos de liberdade. (Neste caso, recomenda-se um motor de scripting)
As regras do RulesEngine são armazenadas em JSON, e as regras (Regras) são expressas em expressões lambda.
Endereço do GitHub:O login do hiperlink está visível.
Endereço do documento:O login do hiperlink está visível.(Pessoalmente, acho que a documentação é um pouco vaga e alguns usos não são explicados de forma muito clara)
Primeiro, crie um novo projeto de console .NET Core 3.1 e use o comando nuget para instalar o pacote, da seguinte forma:
Crie um novo arquivo de regras :Rules.json configurado para copiar para o diretório de saída.
A configuração é a seguinte:
Tente rodar o programa e a saída é a seguinte:
O fluxo de trabalho customTest chamará nossa função C# para validar as regras; note que, ao instanciar o objeto RulesEngine, precisamos adicionar ReSettings para executar nosso método C# normalmente.
Entre eles,Conjuntos de validação são mais abstratos de entender, usará localParams, a palavra-chave da variável local é localParams, que pode ser simplesmente entendida como var name = expressão
O código completo é o seguinte:
Código fonte para download:
Turistas, se quiserem ver o conteúdo oculto deste post, por favor Resposta
|