依賴
編輯 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
規則模闆主要由兩部分構成:
- template header 定義了在模闆中使用的變量。
-
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);