Drools 多流口水

Drools 多流口水,drools,Drools,我有一个场景,需要从同一个输入中累积两个不同的集合: accumulate (ord : Order(type == A); $aSet : collectSet(ord)) accumulate (ord : Order(type == B); $bSet : collectSet(ord)) 有没有办法只用一次积累就能完成? 这是一个简单的例子,但在我的应用程序中,这两个累加中有很多相互的条件,似乎它通过在相同条件下对相同的数据重复两次来做很多额外的工作 就性能而言,我似乎只想在记录上迭代

我有一个场景,需要从同一个输入中累积两个不同的集合:

accumulate (ord : Order(type == A); $aSet : collectSet(ord))
accumulate (ord : Order(type == B); $bSet : collectSet(ord))
有没有办法只用一次积累就能完成? 这是一个简单的例子,但在我的应用程序中,这两个累加中有很多相互的条件,似乎它通过在相同条件下对相同的数据重复两次来做很多额外的工作

就性能而言,我似乎只想在记录上迭代一次,并将不同的数据收集到不同的集合

有什么建议吗


Thanx.

您可以编写自己的累积:

rule coll
when
  $map: Map()
    from accumulate( $o: Order( $t: type ),
         init( Map m = new HashMap();
               m.put( "A", new HashSet() );
               m.put( "B", new HashSet() ); ),
         action( ((Set)m.get( $t )).add( $o ); ),
         reverse( ((Set)m.get( $t )).remove( $o ); ),
         result( m ) )
then
  System.out.println( $map.get( "A" ) );
  System.out.println( $map.get( "B" ) );
end