从 Drools 中的集合中突破
Breaking from inside a collect in 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
,但这仍然意味着收集遍历所有项目。如果任何项目符合收集中的条件,是否可以打破?
如果你只想检查是否存在,那么你可以使用exists
运算符:
rule "Sample"
c : Customer()
exists Item( price > 10 ) from c.items
then
//...
end
在这种情况下,您甚至不需要使用 collect
。 from
关键字将 "loop" 覆盖集合中的所有项目。
您可以查看 Drools' Manual 以了解有关此条件元素的更多信息。
希望对您有所帮助,
我是 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
,但这仍然意味着收集遍历所有项目。如果任何项目符合收集中的条件,是否可以打破?
如果你只想检查是否存在,那么你可以使用exists
运算符:
rule "Sample"
c : Customer()
exists Item( price > 10 ) from c.items
then
//...
end
在这种情况下,您甚至不需要使用 collect
。 from
关键字将 "loop" 覆盖集合中的所有项目。
您可以查看 Drools' Manual 以了解有关此条件元素的更多信息。
希望对您有所帮助,