[rules-users] Test for element in an arraylist

Jeremy Ary jeremy.ary at gmail.com
Wed Jan 16 17:36:21 EST 2013


So I would ask is there a reason that you've chosen to use a global rather
than inserting it as a fact? If you want rules to reason over it, then why
limit yourself to a global? As a general rule of thumb, if you find your
rule architecture leaning towards evals (such as required for a global
within LHS conditions), you've taken a wrong step and need to reevaluate
your structure. They're intended only as a "last resort" solution to
otherwise unavoidable situations due to their effect on performance.

Jeremy


On Wed, Jan 16, 2013 at 3:21 PM, Wolfgang Laun <wolfgang.laun at gmail.com>wrote:

> You cannot use the operator "contains" in an eval(), where a simple
> Java expression
> must be written:
>
>    eval(odmList.contains($a1) && odmList.contains($a2))
>
> But I agree with Jeremy: the original rule is rather unlikely, as it
> would fire for
> a single ODMAnswer being contained in the odmList, or two different
> ODMAnswers
> being contained in the list, and then again for the same two ODMAnswers
> being
> contained in the list...
>
> Basics, study the basics...
> -W
>
>
> On 16 January 2013 18:03, Bojan Janisch
> <bojan.janisch at scai.fraunhofer.de> wrote:
> > Nah thats not gonna work, because I'm using
> > an ArrayList as a global variable. I'm adding
> > and removing ODMAnswers in it and always want to
> > check if there are 2 ODMAnswers in it, to remove
> > them and generate a new one.
> >
> > Of course I differ them in their properties, just
> > wanted to keep the problem simple and understandable.
> >
> > Do you got another option than creating a local
> > $list variable?
> >
> > ----- Ursprüngliche Mail -----
> > Von: "Jeremy Ary" <jeremy.ary at gmail.com>
> > An: "Rules Users List" <rules-users at lists.jboss.org>
> > Gesendet: Mittwoch, 16. Januar 2013 17:54:32
> > Betreff: Re: [rules-users] Test for element in an arraylist
> >
> >
> >
> > I should note that hopefully you can limit this to something like $list
> : ODAList ( ) (a specific extends type of list where you could specify some
> criteria to be more specific with) or can assure that you only have one
> List in play at that time, or you're going to spend some execution going
> through every List in memory to check for these occurrences.
> >
> >
> > Jeremy
> >
> >
> >
> > On Wed, Jan 16, 2013 at 10:50 AM, Jeremy Ary < jeremy.ary at gmail.com >
> wrote:
> >
> >
> >
> > Argh...Sorry, wrong key too early...here's the full changes:
> >
> >
> > rule "Combine ODMAnswers"
> >
> > when
> > $list : List( )
> > $a1:ODMAnswer( some check ) from $list $a2:ODMAnswer( assuming something
> making this one different than $a1 ) from $list
> > then
> > $list.add( new ODMAnswer( ) );
> > $list.remove($a1);
> > $list.remove($a2);
> > end
> >
> >
> >
> >
> >
> >
> > On Wed, Jan 16, 2013 at 10:47 AM, Jeremy Ary < jeremy.ary at gmail.com >
> wrote:
> >
> >
> >
> >
> > Try this;
> >
> >
> > rule "Combine ODMAnswers"
> >
> > when
> > $a1:ODMAnswer( some check )
> > $a2:ODMAnswer( assuming something making this one different than $a1 )
> >
> >
> >
> > eval(odmList contains $a1 && odmList contains $a2)
> > then
> > ODMAnswer answer = new ODMAnswer( );
> > odmList.add(answer);
> > odmList.remove($a1);
> > odmList.remove($a2);
> > end
> >
> >
> >
> >
> >
> > On Wed, Jan 16, 2013 at 10:41 AM, Bojan Janisch <
> bojan.janisch at scai.fraunhofer.de > wrote:
> >
> >
> >
> > rule "Combine ODMAnswers"
> >
> > when
> > $a1:ODMAnswer( )
> > $a2:ODMAnswer( )
> >
> > eval(odmList contains $a1 && odmList contains $a2)
> > then
> > ODMAnswer answer = new ODMAnswer( );
> > odmList.add(answer);
> > odmList.remove($a1);
> > odmList.remove($a2);
> > end
> >
> >
> >
> >
> > _______________________________________________
> > 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
>
> _______________________________________________
> 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/20130116/8ff26b6a/attachment.html 


More information about the rules-users mailing list