RulesEngine est une bibliothèque/paquet NuGet utilisé pour abstraire la logique métier/règles/politiques du système. Cela peut fonctionner de manière très simple en vous permettant de placer des règles en stockage en dehors de la logique centrale du système, en veillant à ce que tout changement apporté aux règles n’affecte pas le système central.
Scénarios applicables :
- Le nombre de types d’entrées et de sorties est relativement fixe, mais la logique d’exécution change fréquemment.
- les conditions de commutation changent fréquemment, et les instructions de commutation complexes sont remplacées ;
- la logique métier avec plusieurs conditions ou règles qui vont changer ;
- Des scénarios où la liberté réglementaire ne nécessite pas de degrés de liberté particulièrement élevés. (Dans ce cas, un moteur de script est recommandé)
Les règles de RulesEngine sont stockées en JSON, et les règles (règles) sont exprimées en expressions lambda.
Adresse GitHub :La connexion hyperlientérée est visible.
Adresse du document :La connexion hyperlientérée est visible.(Personnellement, je trouve que la documentation est un peu vague, et certains usages ne sont pas très clairement expliqués)
D’abord, créez un nouveau projet console .NET Core 3.1 et utilisez la commande nuget pour installer le paquet, comme suit :
Créer un nouveau fichier de règles :Rules.json configuré pour copier dans le répertoire de sortie.
La configuration est la suivante :
Essayez de lancer le programme et la sortie est la suivante :
Le workflow customTest appellera notre fonction C# pour valider les règles, notez que lors de l’instanciation de l’objet RulesEngine, nous devons ajouter des ReSettings pour exécuter normalement notre méthode C#.
Parmi eux,Les ensembles de validation sont plus abstraits à comprendre, utilisera localParams, le mot-clé de la variable locale est localParams, qui peut simplement être compris comme var name = expression
Le code complet est le suivant :
Téléchargement du code source :
Touristes, si vous voulez voir le contenu caché de ce post, s’il vous plaît Répondre
|