ルールの実行につながった個々の条件をすべて取得したい。例えばルール実行の原因となったすべての条件を取得する
、私は以下のルールを持っている場合:
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.
は、私がこれまで試したようなすべての述語のメソッドの実装内できたもの、私はそのメソッドが返すために起こっているときにのみ実行されますloggingステートメントを追加しました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.
になります。
正しいロギング結果を得る方法はありますか?
ありがとう@laune!このペーパーのどのセクションにこの問題の解決策が含まれているかを明確にしてください。 –
ちょうどそれを読む - 他のセクションはルールベースのシステムのあなたの理解を傷つけることはありません。 – laune