RulesEngine är ett bibliotek/NuGet-paket som används för att abstrahera affärslogik/regler/policyer från systemet. Detta kan fungera på ett mycket enkelt sätt genom att göra det möjligt att placera regler i lagring utanför systemets kärnlogik, vilket säkerställer att eventuella ändringar i reglerna inte påverkar kärnsystemet.
Tillämpliga scenarier:
- Antalet in- och utdatatyper är relativt fast, men exekveringslogiken ändras ofta.
- Switchförhållandena ändras ofta och komplexa switch-uttalanden ersätts;
- affärslogik med flera villkor eller regler som kommer att ändras;
- Scenarier där regelfriheten inte kräver särskilt höga frihetsgrader. (I detta fall rekommenderas en skriptmotor)
Reglerna i RulesEngine lagras i JSON, och reglerna (reglerna) uttrycks i lambda-uttryck.
GitHub-adress:Inloggningen med hyperlänken är synlig.
Dokumentadress:Inloggningen med hyperlänken är synlig.(Jag tycker personligen att dokumentationen är lite vag och att vissa användningar inte förklaras särskilt tydligt)
Skapa först ett nytt .NET Core 3.1-konsolprojekt och använd nuget-kommandot för att installera paketet, enligt följande:
Skapa en ny regelfil :Rules.json ställ in att kopiera till utdatakatalogen.
Konfigurationen är följande:
Försök köra programmet och resultatet är följande:
CustomTest-arbetsflödet kommer att anropa vår C#-funktion för att validera reglerna, observera att när vi instansierar RulesEngine-objektet måste vi lägga till ReSettings för att köra vår C#-metod normalt.
Bland dem,Valideringsmängder är mer abstrakta att förstå, kommer att använda localParams, nyckelordet för den lokala variabeln är localParams, vilket enkelt kan förstås som var-namn = uttryck
Den fullständiga koden är som följer:
Källkodsnedladdning:
Turister, om ni vill se det dolda innehållet i detta inlägg, snälla Svar
|