Certainly. And while containsAll may work, mattering the size and nature of the
collections involved (linear vs constant time existence check) it might not perform as
well as your first solution.
--- On Wed, 9/2/09, Wolfgang Laun <wolfgang.laun(a)gmail.com> wrote:
From: Wolfgang Laun <wolfgang.laun(a)gmail.com>
Subject: Re: [rules-users] forall/from/eval/contains: odd DRL syntax error
To: "Rules Users List" <rules-users(a)lists.jboss.org>
Date: Wednesday, September 2, 2009, 11:54 AM
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(a)yahoo.com>
wrote:
Is Collection.containsAll() an
option?
--- On Wed, 9/2/09, Wolfgang Laun <wolfgang.laun(a)gmail.com>
wrote:
> From: Wolfgang Laun <wolfgang.laun(a)gmail.com>
> Subject: [rules-users] forall/from/eval/contains: odd
DRL syntax error
> To: "Rules Users List" <rules-users(a)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(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
-----Inline Attachment Follows-----
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users