Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取导致规则执行的所有条件_Java_Logging_Drools_Rule Engine - Fatal编程技术网

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;
}