[rules-users] Problem using 'not contains'

Bagwell, Allen F afbagwe at sandia.gov
Mon Apr 20 12:31:41 EDT 2009


This is in Drools 4.0.7

I have a class called SatManager with a field:

ArrayList<Satellite> listOfOverheadSats

That has an appropriate getter method.

I have a relatively simple rule that goes something like this:

when
    $sat : Satellite(isOverhead == true)
    $sm : SatManager($ls : listOfOverheadSats not contains $sat)
then
    $ls.add($sat);

My problem is that Drools doesn't understand that the ArrayList has been modified, therefore this rule always fires on the same satellite if the sat object changes in any other way.

I've tried adding:

update($sm);

To the consequence, but that only caused the rule to re-fire infinitely -- even with the no-loop keyword applied.

So my question is how does Drools manage its knowledge of changes to Collections embedded in fact objects? The documention for the 'contains/not contains' keyword did not explain this.

I'm really stumped here.

Allen F. Bagwell
e-mail:  afbagwe at sandia.gov
phone:  505/284-4517
fax:  505/ 844-7886


Ask your doctor if medical advice from a TV commercial is right for you.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090420/d3855162/attachment.html 


More information about the rules-users mailing list