能否通过Drools Spreadsheet生成OOPATH格式DRL文件?是否有切换标识?
Drools Spreadsheet生成OOPATH格式DRL的问题解答
核心结论
- Drools决策表(Spreadsheet)没有直接的切换标识,默认生成的是传统DRL语法。你目前找不到相关示例,是因为官方并未提供这种自动转换的内置功能。
可行解决方案
如果需要生成OOPATH格式的DRL,有两种实用方式:
- 直接在决策表中编写OOPATH表达式:把决策表条件列的内容改成OOPATH格式,比如将原本写
OrderRequest(customerType.getValue1 == "LOYAL")的单元格,替换为/orderRequest[ customerType.getValue1 == "LOYAL" ],生成DRL时就会直接输出OOPATH语法。 - 批量后处理DRL文件:先用默认模板生成传统语法的DRL,再用脚本(如Java、Python脚本)批量替换规则的
when块内容为OOPATH格式。
关于规则未识别的补充
你提到传统语法的规则执行unitInstance.fire()时未被识别,修改为OOPATH后正常运行,说明你的Drools运行环境更适配OOPATH表达式的执行逻辑。这时候使用上面的方法调整决策表,就能解决生成格式的问题。
附你提供的代码示例
传统语法DRL片段:
package com....; unit OrderUnit; import com....OrderRequest; rule "LOYAL_cusomer_v001" when OrderRequest(customerType.getValue1 == "LOYAL") then orderDiscount.setDiscount(orderDiscount.getDiscount() + 5); end
修改后的OOPATH条件片段:
when /orderRequest[ customerType.getValue1 == "LOYAL" ]
内容的提问来源于stack exchange,提问作者Yang Li
相关产品推荐
相关产品推荐

