Java 获取导致规则执行的所有条件
我想得到导致执行规则的所有个别条件 例如,如果我有以下规则:Java 获取导致规则执行的所有条件,java,logging,drools,rule-engine,Java,Logging,Drools,Rule Engine,我想得到导致执行规则的所有个别条件 例如,如果我有以下规则: package app1; rule 'rule1' when MyObjectType1( booleanPredicate1() ) or ( MyObjectType2( booleanPredicate2() ) and MyObjectType3( booleanPredicate3() ) ) or MyObjectType4( bool
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
和booleanpedicate1()
,booleanpedicate2()
和booleanpedicate4()
都是true
,然后我想得到以下输出:
booleanPredicate1()导致规则执行。
booleanPredicate4()导致规则执行。
true
时执行:
布尔布尔布尔谓词1()
{
布尔ret=false;
...
...
如果()
{
ret=真;
}
如果(ret)
{
addToLog(“布尔谓词1变为真”);
}
返回ret;
}
但是使用这个解决方案,我还将得到导致规则执行的输出booleanPedicate2()。
这是错误的
有什么方法可以得到正确的日志记录结果吗?参考它有一个部分可以回答您的问题
这里总结一下:您需要针对单个真值的规则来注册某些事实或某些事实组合的真值。现在的规则将组合注册表中的布尔值,注册表包含问题的答案 咨询它有一个部分回答您的问题
这里总结一下:您需要针对单个真值的规则来注册某些事实或某些事实组合的真值。现在的规则将组合注册表中的布尔值,注册表包含问题的答案 谢谢@laune!你能澄清一下论文中的哪一部分包含了这个问题的解决方案吗?请阅读——其他部分不会影响你对基于规则的系统的理解。谢谢@laune!你能澄清一下论文中的哪一部分包含了这个问题的解决方案吗?只要读一下——其他部分不会影响你对基于规则的系统的理解。
boolean booleanPredicate1()
{
boolean ret = false;
...
...
if (<business-logic-defined-predicate>)
{
ret = true;
}
if(ret)
{
addToLog("booleanPredicate1 became true.");
}
return ret;
}