Drools でファクトのいくつかのプロパティの合計を計算するルールを実装しようとしています。これは、蓄積と合計を使用してうまく機能します。問題は、accumulate メソッドのソース部分に条件に一致するファクトがない場合、ルールが実行されないことです。
一致するファクトがなく、残りの 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)