在Drools中,是否可以在DRL文件定义后以某种方式组合规则。例如,如果我有这样的两条规则:在Drools Expert中组合规则逻辑
rule A
// definition
end
rule B
// definition
end
是否有可能有另一个规则实现如下逻辑:A或B?
在Drools中,是否可以在DRL文件定义后以某种方式组合规则。例如,如果我有这样的两条规则:在Drools Expert中组合规则逻辑
rule A
// definition
end
rule B
// definition
end
是否有可能有另一个规则实现如下逻辑:A或B?
两个规则A和B 是逻辑等价于A或B(不是异或)。
您不能引用另一个规则,但可以在同一个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
对于精确的建议,更多细节是必需的。
你也可以看看激活组,它将触发一个规则并取消其他规则。
这适合我的情况。我试图模拟一个系统的状态。因此,我将能够捕捉并根据规则通知Drools系统的状态,然后再进行推理。 –