在Drools中,是否可以在定义DRL文件时以某种方式组合规则。例如,如果我有两个这样的规则:
rule A
// definition
end
rule B
// definition
end
是否可以使用另一个实现逻辑的规则:A或B?
答案 0 :(得分:0)
两个规则A和B 是A或B(不是xor)的逻辑等价物。
您不能引用其他规则,但可以在同一LHS条件下定义查询并调用两个(或更多)查询。
但是,逻辑的整体模式可能会使一种完全不同的方法变得更加可取,其中不同规则的匹配通过作为派生事实插入而变得有形,称为真值维护。
rule A when ... then
insertLogical( new Fired( "A" ) );
end
rule B when ... then
insertLogical( new Fired( "B" ) );
end
rule AorB when
Fired( rule == "A" || rule == "B" ) // other patterns for other combinations, e.g. &&
then
...
end
有必要提供更多细节以获得精确的建议。
答案 1 :(得分:0)
您还可以查看激活组,它将触发一条规则并取消其他规则。