As you have posted before, you can use the evaluator by referring to the
field in a previously bound fact.

$object : MyObject ( activated == false,
                             $name : name,
                             $firstValue : firstValue,
                             $valueList : valueList )
                           
        // getting the event representing the Value object
        $firstValueEvent: Value( this == $firstValue )
      
        $newValue: Value ( name == $name
                                        &&  this != $firstValueEvent
                                        &&  this after[0ms,1h] $firstValueEvent
                                        &&  $object.parameterValueList not contains this
                                        &&  $object.valueList not contains this   ### ###
                                        && eval(valueExceededLimit(this)) )

I've tried to invert the order. Check carefully, I may have missed a trick ;-)

$newValue: Value ( $name : name, eval(valueExceededLimit(this)) )

$object : MyObject ( activated == false,
                     name == $name,
                     $firstValue: firstValue != $newValue,
                     parameterValueList not contains $newValue,
                     valueList not contains $newValue,
                    
$firstValueEvent: Value( this == $firstValue && != $newValue,
                         this before[0ms,1h] $newValue )

-W




2010/11/1 Tina Vießmann <tviessmann@stud.hs-bremen.de>
I understand why the order needs to be inverted. But that results in the inversion of the whole condition. I'm not sure how to revert the condition.
The complete condition without 'not contains' and inversion is:

        $object : MyObject ( activated == false,
                             $name : name,
                             $firstValue : firstValue,
                             $valueList : valueList )
                            
        // getting the event representing the Value object
        $firstValueEvent: Value( this == $firstValue )
       
        $newValue: Value ( name == $name
                                        &&  this != $firstValueEvent
                                        &&  this after[0ms,1h] $firstValueEvent
                                        &&  $object.parameterValueList not contains $newValue
                                        &&  eval( !($valueList.contains($newValue))
                                                         && valueExceededLimit($newValue)) )






To use not contains, you'll have to invert the order of the patterns:
   $ value : Value ( // other restrictions )
   $object : MyObject ( $valueList : valueList not contains $value )
This will use the evaluator which should be more efficient than eval()
-W


2010/11/1 Mauricio Salatino <salaboy@gmail.com>
can you try with
$valueList not contains $value
but internally I suppose that it will work in the same way that the eval.


On Mon, Nov 1, 2010 at 11:55 AM, Tina Vießmann <tviessmann@stud.hs-bremen.de> wrote:
Is it possible to write the following conditions without using eval?


        $object : MyObject ( $valueList : valueList )  // of type List
        $ value : Value ( // other restrictions
&& eval( !($valueList.contains($value)) ) )


Thank you :)
Tina
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



--
 - CTO @ http://www.plugtree.com 
 - MyJourney @ http://salaboy.wordpress.com
 - Co-Founder @ http://www.jbug.com.ar
 
 - Salatino "Salaboy" Mauricio -

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users