1

我试图在 Drools Planner 项目中找到一个BucketTotal最小的对象。total我从示例代码中改编了这个。

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

就我的推理而言,它的意思是“找到对象BucketTotal$b使得不存在另一个大于BucketTotal对象”。total total$b

事实证明,这意味着相反(我更正了它)。


请解释 Drools 如何找到该声明的原因$b

4

1 回答 1

3

确实,您的事情令人困惑。“不”的意思是“不存在”。因此,如果您想找到最小总数,您可以执行以下操作:

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

上面的方法通常是性能更高的方法,但如果您愿意,也可以使用累积:

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