The latter approach is particularly powerful we have a very simple but 
amazingly flexible class called Affirmation which just have 3 fields - String 
name, Object subject, Object value. This however gives most flexibility that 
you need

Eg


 rule "Hungry"
   when
     $person : Person(hoursSinceLunch>2 || donutsOnDesk==0 ||
  candybarsInDrawer==0)
not Affirmation(name == "PersonIsHungry", subject == $person)
   then
      insert(new Affirmation("PersonIsHungry", $person, true);
 end

 rule "Food"
   when
     $person : Person()
     Affirmation(name == "PersonIsHungry", subject == $person, value == true)
     not Affirmation(name == "PersonHasLookedForFood", subject == $person)
   then
   modify($person) {
       lookForFood()
   }
   insert(new Affirmation("PersonHasLookedForFood", $person));
 end

- I;ve also updated the rules so they are less likely to retrigger multiple 
times if some other rules modify person

Thomas

> -----Original Message-----
> From: rules-users-boun...@lists.jboss.org [mailto:rules-users-
> boun...@lists.jboss.org] On Behalf Of mjohansen
> Sent: 21 July 2011 22:18
> To: rules-users@lists.jboss.org
> Subject: Re: [rules-users] How to reuse a result of a rule in an other rule
>
> Basically, you can either update an object with the results of the first 
> rule, or
> create a new object.
>
> Like:
>
> rule "Hungry"
>   when
>     $person : Person(hoursSinceLunch>2 || donutsOnDesk==0 ||
> candybarsInDrawer==0)
>   then
>     $person.setHungry(true);
>     update($person);
> end
>
> rule "Food"
>   when
>     $person : Person(hungry==true)
>   then
>     $person.lookForFood()
> end
>
> or
>
> rule "Hungry"
>   when
>     $person : Person(hoursSinceLunch>2 || donutsOnDesk==0 ||
> candybarsInDrawer==0)
>   then
>      $hungry=new Hungry();
>      $hungry.setPerson($person);
>      insert($hungry);
> end
>
> rule "Food"
>   when
>     $person : Person()
>     $hungry : Hungry(person==$person)
>   then
>     $person.lookForFood()
> end
>
>
> --
> View this message in context: http://drools.46999.n3.nabble.com/How-to-
> reuse-a-result-of-a-rule-in-an-other-rule-tp3182344p3189730.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users


**************************************************************************************
This message is confidential and intended only for the addressee. If you have 
received this message in error, please immediately notify the 
postmas...@nds.com and delete it from your system as well as any copies. The 
content of e-mails as well as traffic data may be monitored by NDS for 
employment and security purposes. To protect the environment please do not 
print this e-mail unless necessary.

NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, 
United Kingdom. A company registered in England and Wales. Registered no. 
3080780. VAT no. GB 603 8808 40-00
**************************************************************************************

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

Reply via email to