microsoft/RulesEngine:基於 Json的C#規則引擎

banq發表於2022-02-10

基於 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);
 

相關文章