2014-02-19 72 views
0

在Drools中,是否可以在DRL文件定义后以某种方式组合规则。例如,如果我有这样的两条规则:在Drools Expert中组合规则逻辑

rule A 
// definition 
end 

rule B 
// definition 
end 

是否有可能有另一个规则实现如下逻辑:A或B?

回答

0

两个规则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 

对于精确的建议,更多细节是必需的。

+0

这适合我的情况。我试图模拟一个系统的状态。因此,我将能够捕捉并根据规则通知Drools系统的状态,然后再进行推理。 –

0

你也可以看看激活组,它将触发一个规则并取消其他规则。