从Drools的收集中闯出

时间:2018-08-09 21:46:23

标签: drools

我是Drools的新手,如果这是基本知识,我深表歉意。但是,如何在collect中间中断呢?例如,在以下代码中

 c : Customer()
items : List( size == c.items.size ) 
      from collect( Item( price > 10 ) from c.items )

此代码检查是否所有商品的价格都>10。但是,如果我想查看是否有任何商品的价格> 10,我该怎么办?我可以将代码更改为size > 0而不是size == c.items.size,但这仍然意味着collection会遍历所有项目。如果有任何物品符合收集中的条件,是否有可能损坏?

1 个答案:

答案 0 :(得分:2)

如果只想检查是否存在,则可以使用exists运算符:

rule "Sample"
  c : Customer()
  exists Item( price > 10 ) from c.items
then
  //...
end

在这种情况下,您甚至不需要使用collectfrom关键字将“遍历”集合中的所有项目。

您可以检查Drools' Manual以获得有关此条件元素的更多信息。

希望有帮助,