同一ruleflow group下Guided Rule优先于Guided Decision Table执行的原因是什么
同Ruleflow Group下Guided Rule优先于Guided Decision Table执行的原因
这是Drools规则引擎默认冲突解决策略和KIE工作台构建逻辑共同导致的,核心原因如下:
- 首先,同一ruleflow group下未显式设置
salience(优先级,默认值为0)的规则,执行顺序由Drools默认的冲突解决规则决定:先按规则的加载顺序排序,加载早的规则优先执行;如果加载顺序一致,再按规则名称的字典序排序,字典序靠前的优先执行。 - KIE工作台构建KJAR包时,默认的资源加载顺序会优先处理单独创建的Guided Rule文件,之后再解析Guided Decision Table、批量生成对应的DRL规则,因此Guided Rule的加载顺序天然早于决策表生成的规则。
- 就算加载顺序一致,Guided Decision Table生成的规则默认命名规则为
[决策表ID]_row_[行号],这类带数字后缀的名称字典序通常比自定义的Guided Rule名称靠后,排序后依然会让Guided Rule先执行。
如果需要固定执行顺序,不需要依赖默认逻辑,直接给对应规则设置更高的salience值即可,数值越大优先级越高。
内容的提问来源于stack exchange,提问作者shreesh katti
相关产品推荐
相关产品推荐

