NRules(0.9.0)規則引擎開發指南


簡介:規則引擎主要用於模型的規則控制,根據自定義的規則模型對業務模型進行賦值或執行業務模型中的方法等自定義編碼。

 

一、規則引擎的基本對象:

  1. 業務模型(包含字段屬性,方法等的基於業務創建的模型)
  2. 規則模型(規則是基於哪個業務模型建立的)

 

二、規則引擎基本流程:

1.加載規則模型類庫

 

var repository = new RuleRepository();

repository.Load(x =>x.From(typeof(PreferredCustomerDiscountRule).Assembly));

 

2.將所有規則編譯到工廠中,工廠創建會話對象

//Compile rules

var factory = repository.Compile();

 

 //Create a working session

 var session = factory.CreateSession();

 

  1. 實例化業務模型,並添加到規則中

 var customer = new Customer("John Doe") { IsPreferred = true };

            var customer2 = new Customer("zhibin hu") { IsPreferred = true };

            //var order1 = new Order(123456, customer, 2, 25.0) {  IsOpen= true };

            //var order2 = new Order(123457, customer, 1, 100.0) { IsOpen = true };

 

            //Insert facts into rules engine's memory

            session.Insert(customer);

            session.Insert(customer2);

 

  1. 執行規則

session.Fire();

 

 

 

三、規則模型的創建及對業務模型的影響:

 

1.創建規則模型必須繼承NRules.Fluent.Dsl.Rule

 

2.規則的定義重寫該方法:public abstract void Define();

 

Define內調用when()定義規則執行條件

如:

When().Match<Customer>(() => customer);

 

該規則定義了,當檢測到添加了類型為Customer的業務模型時,則執行then中的行為

Then().Do(x => Console.WriteLine("PreferredCustomerDiscountRule...name:"+customer.Name));

 

 

then中可以為業務模型賦值,執行業務模型中的方法

When()中的條件有很多,包括各種查詢檢索判斷,還可以加載其他業務模型進行比較


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM