Drools累加方法,如果没有匹配的源事实,则返回零
我试图在Drools中实现一个规则,它计算一个事实的某个属性的和。使用“累积”和“求和”非常有效。问题是,如果在累积方法的源部分中没有与条件匹配的事实,则不会执行规则 我希望sum方法在没有匹配的事实并且when子句的其余部分被检查时返回零。这有可能吗 更新: 我正在使用Drools 6.0.1 问题似乎在于and条款。这是我的问题所在Drools累加方法,如果没有匹配的源事实,则返回零,drools,accumulate,Drools,Accumulate,我试图在Drools中实现一个规则,它计算一个事实的某个属性的和。使用“累积”和“求和”非常有效。问题是,如果在累积方法的源部分中没有与条件匹配的事实,则不会执行规则 我希望sum方法在没有匹配的事实并且when子句的其余部分被检查时返回零。这有可能吗 更新: 我正在使用Drools 6.0.1 问题似乎在于and条款。这是我的问题所在 rule "accu" when $n: Number() from accumulate( $o: Order() and OrderLine( $v
rule "accu"
when
$n: Number()
from accumulate( $o: Order() and OrderLine( $v: quantity ),
sum($v))
then
System.out.println("*#*#*#*#*#*#*#*#*#* Accu has fired *#*#*#*#*#*#*#*#*#");
end
仅使用订单或订单行即可工作。我有一种感觉,我在用错误的方式解决这个问题。在我的实际案例中,我想要求和的值在订单行中,但条件在另一个类中
$ol : OrderLine($q : quantity)
and
$ac : ArticleClass(orderLine == $ol, crtiteria1=efg, criteria2=abc)
但是当没有匹配的元素时,accumulate返回0
rule accu
when
$n: Number()
from accumulate( Fact( prop == "C", $v: value ),
sum($v))
then
//...
end
它在没有prop==C的事实事实时激发,如果根本没有事实事实则激发。Drools 5.5.0
请提供再现错误、Drools版本等的完整代码。如问题中所述,其中一个事实有效,但如果您累积了两个事实并加入and条件,则规则在不匹配的情况下不会触发。