首页 > 解决方案 > 从 Drools 的集合中闯入

问题描述

我是 Drools 的新手,所以如果这是基本的,我很抱歉。但是我如何在 a 中间休息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,但这仍然意味着收集遍历所有项目。如果任何物品符合收藏中的条件,是否有可能打破?

标签: drools

解决方案


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

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

在这种情况下,您甚至不需要使用collect. 关键字将from“循环”集合中的所有项目。

您可以查看Drools 手册以获取有关此条件元素的更多信息。

希望能帮助到你,


推荐阅读