如何在Drools电子表格决策表中使用通配符配置规则?
Drools电子表格决策表通配符规则实现方案
该需求完全可以实现,具体操作如下:
1. 通配符前缀匹配配置
Drools的matches操作符原生支持正则表达式,你只需要调整参数的适配逻辑即可:
- 如果你不想修改现有参数配置习惯(直接用
A15*这类带*的参数),可以把决策表条件列的表达式修改为:
该逻辑会自动把你配置的输入字段名 matches ("^" + $param.replace("*", ".*") + "$")*通配符转换为正则中的任意字符匹配规则,你参数列配置的"A100","A200","A15*"可以直接生效,不需要额外修改。 - 如果你愿意直接写正则参数,也可以直接把参数配置为
"^A100$","^A200$","^A15.*",无需修改条件列表达式。
2. 默认规则配置
通过规则优先级(salience)控制触发顺序即可实现兜底逻辑:
- 在决策表中新增一行规则,条件列的参数配置为
"*",配合上面的通配符转换逻辑,会自动转为匹配所有输入的正则规则。 - 给这条默认规则设置
salience属性值为-100(数值越小优先级越低),其他业务规则的salience保持正数即可,保证所有业务规则优先匹配,无匹配时才会触发默认规则。 - 如果你开启了规则互斥配置(
activation-group属性),需要把默认规则和其他业务规则放在同一个分组中,避免多条规则同时触发。
示例决策表核心配置参考:
规则名称 匹配参数 执行动作 salience 规则1 "A100" 业务动作1 10 规则2 "A200" 业务动作2 10 规则3 "A15*" 业务动作3 10 默认规则 "*" 兜底动作 -100
内容的提问来源于stack exchange,提问作者user39419
相关产品推荐
相关产品推荐

