2014-02-19 70 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

你也可以看看激活組,它將觸發一個規則並取消其他規則。