<div dir="ltr"><div><div><div><div><div>If there is no cogent reason for collecting a List and acting on it you should match a<br>single Alarm and update it on the rule&#39;s right hand side:<br><br>    rule &quot;Rule [Alarm Collection]&quot;<br>

    when<br>
        $alarm: Alarm ( justInserted == true )<br>
    then<br>
        modify( $alarm ){ setJustInserted( false ) }<br>   
end<br><br></div>Note that you still can store a reference to this Alarm in some global or call Java<br></div>code for additional processing.<br><br></div>If you do need a collected List, you&#39;ll have to copy it on the rule&#39;s right hand side<br>
</div>before you call your Java code.<br><br></div><div>    ArrayList copy = new ArrayList( $alarmColl );<br></div><div><br> The update() call is causing instant reorganisation and the collect result is some<br>sort of cache.<br>
</div><div><div><div><br><div><div><br></div></div></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 12 April 2014 05:56, mohanm <span dir="ltr">&lt;<a href="mailto:mohanm.eee@gmail.com" target="_blank">mohanm.eee@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I am using Drools 5.5.0 Final Expert to do Alarm Co-relation. I was trying<br>
to collect the facts in to the ArrayList collection. My drl file will look<br>
like below. From the Rule I calling an Java method to access the collected<br>
facts.<br>
<br>
/rule &quot;Rule [Alarm Collection]&quot;<br>
no-loop<br>
   when<br>
        $alarmColl : ArrayList() from collect(Alarm<br>
                 (<br>
                        JustInserted == true;<br>
                 ))<br>
<br>
        then<br>
        // act on $alarmColl<br>
end/<br>
<br>
while in my Java code I am loop through the collection to set an attribute<br>
of the Alarm Object. But while I am trying to set this attribute in the<br>
collection, the collection is getting updated and indexes are changed. Due<br>
to which all the objects are not updated. Even I tried using the iterator to<br>
access the ArrayList collection. Still the same issue.<br>
<br>
/<br>
while(index &lt; alarmColl.size()){<br>
                        Alarm alarmObj=alarmColl.get(index)<br>
<br>
                        if(alarmObj.isJustInserted()) {<br>
                                alarmObj.setJustInserted(false);<br>
                                theScenario.getSession().update(alarmObj);<br>
                        }<br>
                        index++;<br>
}/<br>
<br>
<br>
How can I update the objects in collection without changing the index or any<br>
other way to achieve this.<br>
<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://drools.46999.n3.nabble.com/Problem-with-Collection-tp4029219.html" target="_blank">http://drools.46999.n3.nabble.com/Problem-with-Collection-tp4029219.html</a><br>
Sent from the Drools: User forum mailing list archive at Nabble.com.<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</blockquote></div><br></div>