[英]Drools: how to get a list with items with unique ids
我在Drools中有一个复杂的对象。 对象A包含对象B的列表。对象B包含对象C的列表。
对象C具有属性ID。 对象C可以出现在具有相同ID的不同对象B上。
我需要能够计算A中唯一ID的数量。
我的当前规则在ID不重复时有效。 但是,如何获取没有重复ID的listOfC?
rule CountCs
dialect "mvel"
when
a : A( )
listOfC: List( ) from accumulate (
b : B( ) from a.bItems
and
c : C( ) from b.cItems;
collectList( c )
)
eval( listOfC > 2)
then
// do whatever
end
如果您只对事件的数量感兴趣,而对事件本身不感兴趣,则可以使用Set
来收集ID。 该Set
将为您消除重复项(假设您的ID实现了相应的身份和相等性检查):
rule CountCs
dialect "mvel"
when
a : A( )
setOfC: Set( size > 2 ) from accumulate (
b : B( ) from a.bItems
and
c : C( ) from b.cItems;
collectSet( c.id )
)
then
// do whatever
end
请注意,我以相同的方式包含了对集合大小的评估。 您不需要为此使用额外的eval
。
希望能帮助到你,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.