依赖
编辑 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);