Drools:无法正确更新收集对象

时间:2014-04-12 04:08:55

标签: drools

我正在使用Drools 5.5.0 Final Expert来做警报协同关系。我试图将事实收集到ArrayList集合中。我的drl文件如下所示。从规则I调用Java方法来访问收集的事实。

rule "Rule [Alarm Collection]"
no-loop
   when
    $alarmColl : ArrayList() from collect(Alarm 
         ( 
            JustInserted == true;
         ))

    then
    // act on $alarmColl
end

在我的Java代码中,我遍历集合以设置警报对象的属性。但是当我尝试在集合中设置此属性时,集合将更新并且索引已更改。由于所有对象都没有更新。甚至我尝试使用迭代器来访问ArrayList集合。仍然是同一个问题。

while(index < alarmColl.size()){
            Alarm alarmObj=alarmColl.get(index)

            if(alarmObj.isJustInserted()) {
                alarmObj.setJustInserted(false);
                theScenario.getSession().update(alarmObj);
            }
            index++;
}

如何更新集合中的对象而不更改索引或任何其他方式来实现此目的。

0 个答案:

没有答案