[rules-users] Problem with memberOf and/or eval used in collect statement

Edson Tirelli tirelli at post.com
Tue Sep 18 13:02:33 EDT 2007


    Chris,

    Thanks for reporting this.

    I fixed a bug in 4.0.0 (released in 4.0.1) that causes you to see the
correct value for "TestEval1" in 4.0.1 and later versions. Although, at that
time I missed the memberOf scenario. I know why it happens (shadow fact
related), but now I need to figure out a way to fix it.

    May I ask you to open a ticket for that?

    Thanks,
      Edson


2007/9/18, Chris West <crayzfishr at gmail.com>:
>
> All,
>
> I'm having a problem using memberOf combined with a collect statement.  My
> test includes 3 rules each written to output the same results (I think), but
> I get different results (depending on which version of Drools I use).
>
> The rules are:
>
>
> rule "TestMemberOf"
>     salience 10
>     when
>         $messages: ArrayList() from collect (Message(status == 100))
>         $wrappers: ArrayList() from collect (Wrapper(message memberOf
> $messages))
>     then
>         System.out.println("TestMemberOf: " + $wrappers.size());
> end
>
> rule "TestEval1"
>     salience 9
>     when
>         $messages: ArrayList() from collect (Message(status == 100))
>         $wrappers: ArrayList() from collect (Wrapper($message: message,
> eval($messages.contains($message))))
>     then
>         System.out.println("TestEval1: " + $wrappers.size());
> end
>
> rule "TestEval2"
>     salience 8
>     when
>         $wrappers: ArrayList() from collect (Wrapper($message: message,
> eval($message.getStatus() == 100)))
>     then
>         System.out.println("TestEval2: " + $wrappers.size());
> end
>
>
>
> The output is (by version):
>
> 4.0.0
>
> TestMemberOf: 0
> TestEval1: 0
> TestEval2: 2
>
> 4.0.1
>
> TestMemberOf: 0
> TestEval1: 2
> TestEval2: 2
>
> 4.0.2.SNAPSHOT (taken 9/18/07)
>
> TestMemberOf: 0
> TestEval1: 2
> TestEval2: 2
>
>
> The correct output should be:
>
> TestMemberOf: 2
> TestEval1: 2
> TestEval2: 2
>
>
> Am I using memberOf correctly?  Is there some issue using an eval to test
> conditions on a list created by a collect?
>
> Any help would be appreciated.
>
> Attached is the full example.
>
> Thanks,
> -Chris West
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>


-- 
  Edson Tirelli
  Software Engineer - JBoss Rules Core Developer
  Office: +55 11 3529-6000
  Mobile: +55 11 9287-5646
  JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070918/35997d5d/attachment.html 


More information about the rules-users mailing list