Edson,

Unfortunately, I don't know all containers at design time. But your
second advise works very well.

Thanks,
Torsten.

-----Original Message-----
From: Edson Tirelli [mailto:[EMAIL PROTECTED] 
Sent: Dienstag, 14. November 2006 17:18
To: [email protected]
Subject: Re: [drools-user] Access WorkingMemory from within rules or
functions

    Torsten,

    That was the general idea. So if you have 2 containers, declare it 2
times:

rule "Item handling"
When 
        $item : Item(uniqueId)
        $container1: Container( values contains $item ) 
        $container2: Container( values contains $item ) Then
        if(mustBeDeleted($item)) {
                retract($item);
                $container1.remove( $item );
                $container2.remove( $item );
        } else {
                doSomethingElse();
                modify($item);
        }
End


    You may or may not call modify($containerX) also, depending on your 
rules and what you are trying to achieve.

    []s
    Edson


Geise, Thorsten (ext) wrote:

>This approach works very well for the first container. But, because the
>item-fact is retracted from the working memory, the rule will never
>fired for the second container.
>
>Torsten. 
>
>-----Original Message-----
>From: Edson Tirelli [mailto:[EMAIL PROTECTED] 
>Sent: Dienstag, 14. November 2006 17:01
>To: [email protected]
>Subject: Re: [drools-user] Access WorkingMemory from within rules or
>functions
>
>   Torsten,
>
>   If the container is asserted in the working memory, just add it to
>the rule:
>
>rule "Item handling"
>When 
>       $item : Item(uniqueId)
>        $container: Container( values contains $item ) Then
>       if(mustBeDeleted($item)) {
>               retract($item);
>                $container.remove( $item );
>       } else {
>               doSomethingElse();
>               modify($item);
>       }
>End
>
>
>    Otherwise, you can set the container as a global:
>
>global my.package.Container container;
>
>rule "Item handling"
>When 
>       $item : Item(uniqueId)
>Then
>       if(mustBeDeleted($item)) {
>               retract($item);
>                container.remove( $item );
>       } else {
>               doSomethingElse();
>               modify($item);
>       }
>End
>
>    You can access workingMemory through a special variable named
>"drools", but for your case, I think best approach is one of the above.
>
>    []s
>    Edson
> 
>
>Geise, Thorsten (ext) wrote:
>
>  
>
>>Is it possible to access the working memory from within a rule or 
>>function?
>>
>>Example: I have two container objects that refer to another object 
>>(item). Both container have this item in a list.
>>A rules decides to delete the item and therefore retracts it from the 
>>working memory. But I need to delete the item from the two containers 
>>as well. How to do?
>>
>>rule "Item handling"
>>When 
>>      $item : Item(uniqueId)
>>Then
>>      if(mustBeDeleted($item)) {
>>              retract($item);
>>      } else {
>>              doSomethingElse();
>>              modify($item);
>>      }
>>End
>>
>>Thanks,
>>Torsten.
>>
>>---------------------------------------------------------------------
>>To unsubscribe from this list please visit:
>>
>>   http://xircles.codehaus.org/manage_email
>>
>>
>> 
>>
>>    
>>
>
>
>--
>  ---
>  Edson Tirelli
>  Software Engineer - JBoss Rules Core Developer
>  Office: +55 11 3124-6000
>  Mobile: +55 11 9218-4151
>  JBoss, a division of Red Hat @ www.jboss.com
>
>  IT executives: Red Hat still #1 for value
>  http://www.redhat.com/promo/vendor/ 
>
>
>---------------------------------------------------------------------
>To unsubscribe from this list please visit:
>
>    http://xircles.codehaus.org/manage_email
>
>
>---------------------------------------------------------------------
>To unsubscribe from this list please visit:
>
>    http://xircles.codehaus.org/manage_email
>
>
>  
>


-- 
  ---
  Edson Tirelli
  Software Engineer - JBoss Rules Core Developer
  Office: +55 11 3124-6000
  Mobile: +55 11 9218-4151
  JBoss, a division of Red Hat @ www.jboss.com

  IT executives: Red Hat still #1 for value
  http://www.redhat.com/promo/vendor/ 


---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email


---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to