我正在使用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++;
}
如何更新集合中的对象而不更改索引或任何其他方式来实现此目的。