0
我正试图在Drools中实现一个计算事实的某些属性的总和的规则。使用积累和总和很有效。问题是,如果没有与accumulate方法的源部分中的条件相匹配的事实,则不执行规则。Drools累加方法,如果没有匹配的来源事实返回零
我想sum方法返回零,如果没有事实匹配,并且when子句的其余部分被检查。这有可能吗?
更新: 我正在使用Drools 6.0.1 问题似乎在于和子句。这是一个代码,这是我的问题。
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)