我正在尝试在 Drools 中实现一个规则,该规则计算一个事实的某个属性的总和。使用累积和求和效果很好。问题是,当累积方法的源部分中没有符合条件的事实时,不会执行规则。
如果没有事实匹配并且检查其余的 when 子句,我希望 sum 方法返回零。这有可能吗?
更新:我正在使用 Drools 6.0.1 问题似乎在于 and 子句。这是我的问题的代码。
rule "accu"
when
$n: Number()
from accumulate( $o: Order() and OrderLine( $v: quantity ),
sum($v))
then
System.out.println("*#*#*#*#*#*#*#*#*#* Accu has fired *#*#*#*#*#*#*#*#*#");
end
仅使用 Order 或 OrderLine 即可。我有一种感觉,我以错误的方式解决了这个问题。在我的真实案例中,我想总结的值在 OrderLine 中,但标准在另一个类中。
$ol : OrderLine($q : quantity)
and
$ac : ArticleClass(orderLine == $ol, crtiteria1=efg, criteria2=abc)