规则模板简介
规则模板是使用模板文件和表格数据源即时生成DRL规则的方法。
表格数据源是指可以用表格中展示的数据,典型的介绍是数据库和Excel。
如果根据存储在应用程序之外的数据来生成规则?解决方案之一就是:规则模板
规则模板的优势
规则的数据和结构完全分离
相同的模板可用于不同的数据集
同一数据集可用于不同的模板
与决策表相比,提供了极大的灵活性。
规模模板的语法结构
template header 开头 变量(比如,id) 空行(表示header结束) template package import rule规则名称 规则属性 when、then、end,使用方法@{id} end template
示例:
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配置
<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
执行程序:
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。