规则模板简介
- 规则模板是使用模板文件和表格数据源即时生成DRL规则的方法。
- 表格数据源是指可以用表格中展示的数据,典型的介绍是数据库和Excel。
- 如果根据存储在应用程序之外的数据来生成规则?解决方案之一就是:规则模板
规则模板的优势
- 规则的数据和结构完全分离
- 相同的模板可用于不同的数据集
- 同一数据集可用于不同的模板
- 与决策表相比,提供了极大的灵活性。
规模模板的语法结构
代码语言:javascript复制template header 开头
变量(比如,id)
空行(表示header结束)
template
package
import
rule规则名称
规则属性
when、then、end,使用方法@{id}
end template
示例:
代码语言:javascript复制template header
id
username
package com.template;
import com.secbro2.drools.demo.Person;
template "template-rules"
rule "Categorize Persons_@{row.rowNumber}"
no-loop true
when
$p: Person(id == @{id})
then
modify ($p){ setUsername("@{username}")};
end
end template
规则模板实战
kmodule.xml配置
代码语言:javascript复制<kbase packages="com.template" name="test-template">
<ruleTemplate dtable="com/template/template.xls" template="com/template/template.drt" row="2" col="1"/>
</kbase>
xls文件内容:
编号 | 名称 |
---|---|
1 | Tom |
2 | Lucy |
执行程序:
代码语言:javascript复制public class Demo15 extends BaseDemo {
public static void main(String[] args) {
KieServices kieServices = KieServices.Factory.get();
KieBase kieBase = kieServices.getKieClasspathContainer().getKieBase("test-template");
KieSession kieSession = kieBase.newKieSession();
Person p = new Person(2,"");
kieSession.insert(p);
kieSession.fireAllRules();
System.out.println(p.getUsername());
}
}
打印结果:Lucy。
原文链接:http://www.choupangxia.com/topic/detail/98