天天看點

Drools Rule Template

依賴

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

<dependency>  
    <groupId>org.drools</groupId>
    <artifactId>drools-templates</artifactId>
</dependency>        

模闆

建立規則模闆檔案 test.drt:

template header  
test

package template

template "this is a test"

    rule "test_@{row.rowNumber}"
        when
        then
            System.out.println("Hello @{test}");
    end

end template        

規則模闆主要由兩部分構成:

  1. template header 定義了在模闆中使用的變量。
  2. template 以 template “template name” 開頭,以 end template 結尾,中間定義了模闆的内容。變量占位符使用 @{var_name}。@{row.rowNumber} 是一個特殊的變量,每次會按順序生成一個行号,可用于區分規則名。

    編譯規則

KieHelper 是 Drools 提供的工具類,可用于編譯 DRL 規則檔案,建立會話等。

KieHelper helper = new KieHelper();  
helper.addContent(drl, ResourceType.DRL);  
KieSession kieSession = helper.build().newKieSession();        

編譯

渲染模闆的流程,先将資料封裝為 DataProvider,然後通過 DataProviderCompiler 使用 DataProvider 将模闆編譯為 DRL。

數組

Drools 支援數組類型的 DataProvider,示例:

DataProvider data = new ArrayDataProvider(new String[][]{  
        new String[]{"Anthony"}
});
DataProviderCompiler converter = new DataProviderCompiler();  
String drl = converter.compile(data, template);        
Test test = new Test();  
test.setTest("Anthony");  
ObjectDataCompiler converter = new ObjectDataCompiler();  
String drl = converter.compile(Arrays.asList(test), template);