我正在迭代DRL文件中的列表。我需要在完成循环后调用新议程。但是下面的代码将议程和#34; B称为C"对于所有迭代
rule "Difference in offsets"
dialect "java"
lock-on-active
when
$notification : NotificationVO()
wtOffset:Integer() from $notification.getWeightOffset();
then
System.out.println("Hello loop1");
$notification.getOffsetChngesInterval().
add((wtOffset-$notification.getInitialOffset()));
update($notification);
drools.setFocus("B to C");
rule "Last activity"
dialect "java"
salience 2
no-loop true
auto-focus false
agenda-group "B to C"
when
$notification:NotificationVO
($notification.getOffsetChngesInterval()!=null)
then
System.out.println("Rule2---"+
$notification.getOffsetChngesInterval().size());
end
在上面的代码中,我想把议程组" B的重点放在C"只有在完成$ notification.getWeightOffset();。
的迭代之后答案 0 :(得分:0)
两条评论。 (1)需要充分利用规则属性。 (2)规则"抵消差异"实现一个过程范例:映射一个列表的元素以创建另一个列表。
那就是说,我会计算"更改间隔"在规则的右侧,当有更多"权重抵消" "改变间隔"。 (我猜这是一个很好的条件。)
rule "Difference in offsets"
dialect "java"
when
$ntf: NotificationVO( weightOffset.size() > offsetChngesInterval.size(),
$initOff: initialOffset )
then
for( Integer ioff: $ntf.getWeightOffset ){
$ntf.getOffsetChngesInterval().add(ioff - $initOff );
}
update( $ntf );
System.out.println( $ntf.getOffsetChngesInterval().size());
end