[rules-users] Re: Multipattern collect

Geoffrey De Smet ge0ffrey.spam at gmail.com
Sun Nov 18 04:59:42 EST 2007


Thanks Edson :)



"memberOf" isn't in the manual index,
It's hidden away under 6.5.2.1.1.3.1. Operators,
maybe the index could be refactored so those operators are listed?
"6.5.2.1. Pattern" contains a lot of useful information, but there's not 
decent overview of it's content.

I would even go so far to propose splitting "6.5.2. Left Hand Side 
(when) Conditional Elements" from chapter 6, as it's - imho - a highly 
critical reference for writing rules, so maybe even a top level chapter.

Just some thoughts, feel free to ignore :)

With kind regards,
Geoffrey De Smet


Edson Tirelli wrote:
> 
>    Geoffrey,
> 
>    What you want is simply to constrain the inner pattern:
> 
> rule "calculateTopicConflict"
>      when
>          $leftTopic : Topic($id : id);
>          $rightTopic : Topic(id > $id);
>          $studentSet : HashSet( size > 0 )
>              from collect(
>                  $student : Student( this memberOf 
> $leftTopic.studentList, this memberOf $rightTopic.studentList )  );
>      then
>          insertLogical(new TopicConflict($leftTopic , $rightTopic , 
> $studentSet));
> end
> 
>    []s
>    Edson
> 
> 
> 2007/11/17, Geoffrey De Smet <ge0ffrey.spam at gmail.com 
> <mailto:ge0ffrey.spam at gmail.com>>:
> 
>     Is a multipattern collect supported?
> 
>     I have a rule which finds all 2 topics and all the students they share
>     if there is at least 1 such student:
> 
>     rule "calculateTopicConflict"
>          when
>              $leftTopic : Topic($id : id);
>              $rightTopic : Topic(id > $id);
>              $studentSet : HashSet( size > 0 )
>                  from collect(
>                      $student : Student(),
>                      $leftTopic.studentList contains $student,
>                      $rightTopic.studentList contains $student
>                  );
>          then
>              insertLogical(new TopicConflict($leftTopic , $rightTopic ,
>     $studentSet));
>     end
> 
> 
>     This won't compile:
>     Caused by: org.drools.rule.InvalidRulePackage: [29,36]: unknown:29:36
>     mismatched token: [@370,1504:1504=',',<11>,29:36]; expecting type
>     RIGHT_PAREN[30,39]: unknown:30:39 mismatched token:
>     [@376,1545:1552='contains',<49>,30:39]; expecting type
>     LEFT_PAREN[30,48]: unknown:30:48 Unexpected token '$student'
>             at org.drools.rule.Package.checkValidity(Package.java:424)
> 
> 
>     Is a multipattern collect supported?
> 
>     Thanks for your help :)
> 
>     --
>     With kind regards,
>     Geoffrey De Smet
> 
>     _______________________________________________
>     rules-users mailing list
>     rules-users at lists.jboss.org <mailto: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 <http://www.jboss.com>
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users




More information about the rules-users mailing list