microsoft/RulesEngine:基于 Json的C#规则引擎


基于 Json 的规则引擎,具有广泛的动态表达式支持,是一个库/NuGet 包,用于从系统中抽象出业务逻辑/规则/策略。它提供了一种简单的方法,使您能够将规则放在系统核心逻辑之外的存储中,从而确保规则的任何更改都不会影响核心系统。
您需要根据给定的架构定义存储规则,并且它们可以存储在任何认为合适的存储中,例如 Azure Blob 存储、Cosmos DB、Azure 应用程序配置、实体框架、SQL Server、文件系统等。对于 RuleExpressionType LamdaExpression,规则写成lambda 表达式

[
  {
    "WorkflowName": "Discount",
   
"Rules": [
      {
       
"RuleName": "GiveDiscount10",
       
"SuccessEvent": "10",
       
"ErrorMessage": "One or more adjust rules failed.",
       
"ErrorType": "Error",
       
"RuleExpressionType": "LambdaExpression",
       
"Expression": "input1.country == \"india\" AND input1.loyaltyFactor <= 2 AND input1.totalPurchasesToDate >= 5000"
      },
      {
       
"RuleName": "GiveDiscount20",
       
"SuccessEvent": "20",
       
"ErrorMessage": "One or more adjust rules failed.",
       
"ErrorType": "Error",
       
"RuleExpressionType": "LambdaExpression",
       
"Expression": "input1.country == \"india\" AND input1.loyaltyFactor >= 3 AND input1.totalPurchasesToDate >= 10000"
      }
    ]
  }
]

使用以下代码启动实例将规则注入规则引擎 :
var rulesEngine = new RulesEngine(workflow, logger);