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(a)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(a)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(a)gmail.com>
> An: "Rules Users List" <rules-users(a)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(a)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(a)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(a)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(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
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users