ASP.NET RulesEngine 介紹

微軟使用C#開發一套RulesEngine,將規則進行高度抽象,期望核心商業邏輯穩定,而規則的擴充或修改可透過一種動態又簡單方式來進行,進而避免修改程式碼,而且還無須定義模型類別,更貼近真實世界動態輸入行為,最終輸出預期結果。

官方說明 RulesEngine

特性:

  • Json based rules definition ( Json定義規則 )

  • Multiple input support (支援多輸入)

  • Dynamic object input support (支援動態物件輸入)

  • C# Expression support (支援C# 表達式)

  • Extending expression via custom class/type injection (支援自訂義類別擴充表達式並注入)

  • Scoped parameters (範圍参数)

情境

電子商務訂單依照訂單金額與特定客戶給予折扣

折扣規則:

  1. 每筆訂單基本折扣為5%

  2. 一般消費客群的特定客戶且訂單金額大於100元且小於1000元折扣為1%

  3. 中消費客群的特定客戶且訂單金額大於1000元且小於2000元折扣為2%

  4. 高消費客群的特定客戶且訂單金額大於300元折扣為3%

以上計算出折扣金額,此訂單金額減折扣金額等於訂單總金額。

結果,若之後規則增加或異動,只需要調整設定檔即可。

程式碼

  1. JSON 設定檔

C# 程式碼

Last updated