gpt4 book ai didi

java - 获取导致规则执行的所有条件

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:59 24 4
gpt4 key购买 nike

我想获取导致执行规则的所有单独条件。

例如,如果我有以下规则:

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() 导致规则执行。
  • booleanPredicate4() 导致规则执行。

到目前为止我所尝试的是在所有此类谓词方法的实现中,我添加了一个日志记录语句,该语句仅在该方法返回true时才执行:

boolean booleanPredicate1()
{
boolean ret = false;
...
...
if (<business-logic-defined-predicate>)
{
ret = true;
}
if(ret)
{
addToLog("booleanPredicate1 became true.");
}
return ret;
}

但是通过这个解决方案,我还会得到输出 booleanPredicate2()导致规则执行。这是错误的。

有什么方法可以获得正确的日志结果吗?

最佳答案

咨询my paper on rule design patterns它有一个部分回答您的问题。

总结一下:您需要针对各个真值的规则来记录某些事实或某些事实组合的真实情况。您现在拥有的规则将组合注册表中的 boolean 值,并且注册表包含您问题的答案。

关于java - 获取导致规则执行的所有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41393037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com