Drools 决策表详细说明
Drools 决策表详细说明
官方文档决策表说明
Drools 决策表的使用 16.7. Spreadsheet decision tables
Excel组成部分与drl规则文件对应关系
那么,“按约定定义”的Excel文件,约定是什么?也就是Excel需要满足什么样的格式?
三个组成部分:RuleSet、RuleTable、Attributes
Excel文件内容与drl文件内容对应关系如下两个截图:
可以参考下之前的文章 :Drools基本组件与文件介绍
drl规则文件内容说明
Excel决策表内容说明
Excel中RuleSet部分,定义的是文件的相关内容,对应drl规则文件中从package到rule关键字之间的部分关键字或对整个规则文件的属性参数定义。
每个参数含义如下:
决策表约定参数详解
RuleSet
1 ~ 3列内容 从RuleSet 开始到 RuleTable字段前都是配置参数和全局参数配置
RuleTable
这部分对应drl文件中的rule关键字模块,即rule-when-then-end中的内容
其中Name是规则rule后面的rule_name的前缀,完整的rule_name是这个前缀+Excel文件行号。
DESCRIPTION:描述,可以理解为是对Excel文件的描述,便于阅读
CONDITION:对应的是drl文件中when的部分其中第1行为pattern类型约束,第2行为属性约束,第3行为注释,第4行开始是具体的条件参数。从第4行开始,每一行将生成1条rule。
ACTION:与Condition对应的结果,对应drl文件中的then部分。
Attributes
属性部分对应drl文件中的属性,属性名放到DESCRIPTION这一行,可以任意位置,每个属性占一列;属性值放到第4行及以后,每一行是一条rule,因此每个属性值都对应每一条rule。
示例一:
转换的drl规则文件可以参考:Drools 决策表的使用与说明(一)
这里截取一小段翻译后的代码可以参考下,具体可以看上面的文章地址!!
执行结果:
policy.getBasePrice() = 120
policy.getDiscountPercent() = 20
总共执行了 :2 条规则
示例二:
转换drl规则
package rules.excels;
//generated from Decision Table
import com.mk.drools.excel.Account;
import java.util.List;
import com.mk.drools.excel.Student;
import com.mk.drools.excel.Level;
global List<String> list;
// rule values at B13, header at B8
rule "ExcelTable1_13"
salience 65535
when
$account:Account(sex != "女")
then
list.add("性别不对或者分数太低");
end
// rule values at B14, header at B8
rule "ExcelTable1_14"
salience 65534
no-loop true
when
$account:Account(age < 22 || age > 28)
then
list.add("ss");
end
// rule values at B15, header at B8
rule "ExcelTable1_15"
salience 65533
when
$account:Account(balance < 1000)
then
list.add("dd");
end
输出结果:
用户balance:300.0
list:[性别不对或者分数太低, ss, dd]
总共执行了: 3 条规则
添加微信,_ 不定时更新代码demo示例
添加 回复 “drools-demo” 获取示例代码