'not'关键字的概念含义;评估对象之间

时间:2012-02-09 07:25:24

标签: drools drools-planner

我正在尝试在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

1 个答案:

答案 0 :(得分: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