1
我想獲取導致執行規則的所有單個條件。獲取導致規則執行的所有條件
舉例來說,如果我有以下規則:
package app1;
rule 'rule1'
when
MyObjectType1(booleanPredicate1())
or
(
MyObjectType2(booleanPredicate2())
and
MyObjectType3(booleanPredicate3())
)
or
MyObjectType4(booleanPredicate4())
then
System.out.println("In rule - " + drools.getRule().getName());
end
和booleanPredicate1()
,booleanPredicate2()
和booleanPredicate4()
是true
的話,我想下面的輸出:
booleanPredicate1() resulted in rule execution.
booleanPredicate4() resulted in rule execution.
我已經試過到目前爲止所有這些斷言方法的實現裏面,我已經添加它獲取只有當該方法是否會返回一個執行的日誌記錄語句true
:
boolean booleanPredicate1()
{
boolean ret = false;
...
...
if (<business-logic-defined-predicate>)
{
ret = true;
}
if(ret)
{
addToLog("booleanPredicate1 became true.");
}
return ret;
}
但用這個解決方案,我也會得到輸出booleanPredicate2() resulted in rule execution.
這是錯誤的。
有沒有什麼辦法可以得到正確的記錄結果?
Thanks @laune!您能否詳細說明該論文的哪一部分包含解決方案? –
只需閱讀它 - 其他部分不會影響您對基於規則的系統的理解。 – laune