1

DroolsPlannerプロジェクトでBucketTotal最小のオブジェクトを見つけようとしています。totalこれをサンプルコードから採用しました。

rule "insertMinimumBucketTotal"
when
   $b : BucketTotal($total : total)
   not BucketTotal(total > $total) // CONFUSED HERE
then
   insertLogical(new MinimumBucketTotal($total));
end

私の推論では、「BucketTotalオブジェクトを検索して、より大きいオブジェクトが存在$bしないようにする」ことを意味していました。BucketTotaltotal total$b

結局のところ、それは反対の意味でした(そして私はそれを修正しました)。


Droolsがそのステートメントを見つける理由を説明してください$b

4

1 に答える 1

3

確かにあなたは物事を混乱させています。「not」は「存在しない」という意味です。したがって、最小合計を見つけたい場合は、次のことができます。

rule "minimum"
when
   BucketTotal( $min : total )
   not BucketTotal( total < $min )
then
   // do something with $min
end

上記は通常、よりパフォーマンスの高い方法ですが、必要に応じて、accumulateを使用することもできます。

rule "minimum"
when
    accumulate( BucketTotal( $total : total ),
                $min : min( $total ) )
then
    // do something with $min
end
于 2012-02-09T20:22:58.697 に答える