Я хочу получить все индивидуальные условия, которые привели к выполнению правила.Получить все условия, которые привели к выполнению правила
Например, если у меня есть следующее правило:
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.
, который является неправильным.
Есть ли способ, с помощью которого я могу получить правильные результаты ведения журнала?
Спасибо @laune! Не могли бы вы прояснить, в каком разделе этой статьи содержится решение этой проблемы? –
Просто прочитайте это - другие разделы не повредят вашему пониманию систем, основанных на правилах. – laune