天天看點

16、規則模闆Drools6.4的使用

編輯pom.xml 檔案,添加依賴

16、規則模闆Drools6.4的使用

與決策表(不一定需要電子表格)相關的是“規則模闆”( drools-templates 子產品中)。它們使用任 何表格式的資料源作為一個規則資料源——填入模闆産生多數規則。 這可以允許兩個更靈活的電子表 格,而且執行個體在現有的資料庫中管轄(代價是預先開發産生規則的模闆)。 利用規則模闆, 資料與規則分離,并且有關規則的資料驅動部分沒有限制。是以,你同時可以做你在     規則表中能夠做的任何事情,你也可以做到以下幾點:

  • 存儲你的資料在資料庫中(或者任何其他格式)。
  • 根據資料的值有條件地産生規則。
  • 為你的規則的任何部分使用資料(例如,條件運算符,類名,屬性名)。
  • 在相同的資料上運作不同的模闆。

我們先來一下 模闆檔案是如何編寫的: 首先先要引入一個xls檔案   檔案名要與配置檔案中保持一緻,路徑也是一樣的 後面會對這個xls檔案說明

16、規則模闆Drools6.4的使用

編輯drt檔案 檔案名要與配置檔案中保持一緻,路徑也是一樣的 最好是将xls與drt 檔案 放在同一下目錄下

template header         #注:template header 固定寫法,必須在模闆的最開始部分
age                     #注: age log 表示标題的是依次顯示資料的列的清單。在這個案例中,我們命名第一列為"age",第三列為"log"
log
                        #注:這裡是一空行,表示定義結束 
package rules.testdrt;
import com.drools.api.rule.Person;
global java.util.List list;

template "cheesefans"  #注"template" 關鍵字通知一個規則模闆開始。在一個模闆檔案中可能超過一個模闆。模闆應該有一個唯一的名字

rule "Cheese fans_@{row.rowNumber}"#注:@{row.rowNumber}, 它給每個資料行一個唯一的數字, 使你能産生唯一的規則名字
    when
        Person(age == @{age})
    then
        list.add("@{log}");
end
end template
#上面是一個标準的模闆的寫法   可能寫的比較亂,那請參考下面完整的例子
#在xls中的列資料要與 規則模闆中用來做操作的類型包括java中的類型要保持一緻。否則會報錯,但要注意的一點是 如果用的是String類型的  在模闆中引用 必須是要加 “”的 @{age} 是數字類型的 是以可以省略不加
           
template header 
age
log

package rules.testdrt;
import com.drools.api.rule.Person;
global java.util.List list;

template "cheesefans"

rule "Cheese fans_@{row.rowNumber}"
    when
        Person(age == @{age})
    then
        list.add("@{log}");
end
end template
           

完整的規則模闆的說明  其實就是将xls中的資料填寫到模闆檔案中對應的 占位符上。但在編寫xls有幾個細節要注意一下: 第一點:xls中的具體行資料是根據配置檔案row值來确定的,如果設定為row="1"則表示從第一行開始取資料 第二點:xls中的具體列資料是根據配置檔案col值來确定的,如果設定為col="1"則表示從第一列開始取資料 具體的java調用,其實與執行規則時的是一樣的:

16、規則模闆Drools6.4的使用

還有一個有變化的地方就是配置檔案:

16、規則模闆Drools6.4的使用

ruleTemplate  規則模闆, dtable引用xls檔案,表示二維表   template是具體的模闆檔案 row/col表示行/列,引用xls的話 該值是不能省略的。 還有一種不通過 xls引用的方式來實作 規則模闆 請參考:http://blog.csdn.net/u013115157/article/details/52029258

下面是小編的微信轉帳二維碼,小編再次謝謝讀者的支援,小編會更努力的

16、規則模闆Drools6.4的使用

----請看下方↓↓↓↓↓↓↓

百度搜尋 Drools從入門到精通:可下載下傳開源全套Drools教程

16、規則模闆Drools6.4的使用

深度Drools教程不段更新中:

16、規則模闆Drools6.4的使用

更多Drools實戰陸續釋出中………

掃描下方二維碼關注公衆号 ↓↓↓↓↓↓↓↓↓↓

16、規則模闆Drools6.4的使用
16、規則模闆Drools6.4的使用