[rules-users] forall/from/eval/contains: odd DRL syntax error

Wolfgang Laun wolfgang.laun at gmail.com
Wed Sep 2 12:54:46 EDT 2009


Certainly, and it's more to the point - thank you!

Nevertheless, the compiler hiccup ought to be investigated
-W


On Wed, Sep 2, 2009 at 5:31 PM, Greg Barton <greg_barton at yahoo.com> wrote:

> Is Collection.containsAll() an option?
>
> --- On Wed, 9/2/09, Wolfgang Laun <wolfgang.laun at gmail.com> wrote:
>
> > From: Wolfgang Laun <wolfgang.laun at gmail.com>
> > Subject: [rules-users] forall/from/eval/contains: odd DRL syntax error
> > To: "Rules Users List" <rules-users at lists.jboss.org>
> > Date: Wednesday, September 2, 2009, 9:58 AM
> > A rule has to ascertain that all elements in
> > a List<ElemBoxStatus>in a
> > Collector occur in the matching BoxResponse's
> > Set<ElemBoxStatus>. There is
> > just one BoxResponse per Collector.
> >
> > This here works fine:
> >
> >
> > rule matchCollectorResponse
> >  when
> >         $c : Collector( $ebsList :
> > elemBoxStatusList, $gsSet : globalStatusSet )
> >         $b : BoxResponse( collector == $c,
> > globalStatusSet == $gsSet, $ebsSet : elemBoxStatusSet  )
> >
> >         forall( $ebs : ElemBoxStatus() from
> > $ebsList
> >                 BoxResponse( collector ==
> > $c, elemBoxStatusSet contains $ebs ) )
> >     then
> > ...
> > end
> >
> > Thinking that $ebs is already available from the second
> > pattern ($b:...), I tried
> >
> >
> > rule matchCollectorResponse
> >     when
> >         $c : Collector( $ms : message, $ebsList :
> > elemBoxStatusList, $gsSet : globalStatusSet )
> >         $b : BoxResponse( collector == $c,
> > globalStatusSet == $gsSet, $ebsSet : elemBoxStatusSet  )
> >
> >         forall( $ebs : ElemBoxStatus() from
> > $ebsList
> >                    eval( $ebsSet.contains(
> > $ebs ) ) )
> >     then
> > ...
> > end
> >
> > but the compiler came back with
> >
> > Line ...:55 no viable alternative at input '$ebs'
> > in rule matchCollectorResponse in pattern eval
> >
> >
> > Defining a suitable function isIn(...) and using this
> > within eval() produces the same result. This
> > and other experiments seems to indicate that bindings in
> > the first pattern of forall() are not
> > passed in to an eval() later in the forall.
> >
> >
> > JIRA?
> >
> > -W
> >
> >
> >
> > -----Inline Attachment Follows-----
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090902/3f13994a/attachment.html 


More information about the rules-users mailing list