[rules-users] Design Question

bchrist2 blair.christie at cgi.com
Fri Jan 25 08:57:37 EST 2008


This is great. Thanks. 
You could then cache the food for the day in  process-level cache in
Hibernate 
which iis best used to store objects that change relatively infrequently. 




Anstis, Michael (M.) wrote:
> 
> Is this not a more viable solution?
> 
> Global HibernateFacade hibernate;
> 
> Rule "free food"
>     when
>        $food: Food() from hibernate.getFoodForTheDay()
>        $person: Person( favouriteFood == $food )
>     then
>        System.out.println( $person.getName() + " gets a hamburger" );
> End
> 
> Where HibernateFacade is a façade for using Hibernate named queries?
> 
> -----Original Message-----
> From: rules-users-bounces at lists.jboss.org
> [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of bchrist2
> Sent: 24 January 2008 19:02
> To: rules-users at lists.jboss.org
> Subject: Re: [rules-users] Design Question
> 
> 
> That makes sense. 
> So,  if you have a rule with 2 different requirements (changes daily
> versus
> yearly ) 
> 
> if a persons favourite food is equal to the free food (for the day 
> .changes
> once per day) then you would load it into the working memory as a fact 
> 
> BUT if for the same rule 
> if a persons favourite food is equal to the free food (for the day which
> is
> basically immutable..changes once per year) then you would load it into
> the
> global list. 
>  
> 
> 
> 
> 
> Mark Proctor wrote:
>> 
>> Christie, Blair wrote:
>>>
>>> Does anyone have any examples of using  the new 'from' element it is 
>>> now common to pass a Hibernate session as a global, to allow 'from' to 
>>> pull data from a named Hibernate query.
>>>
>>>  
>>>
>>> Would it be good design to store the values for a condition in a 
>>> database so they can be changed without having to go into the .drl file?
>>>
>>>  
>>>
>>> i.e.
>>>
>>> So instead of ..
>>>
>>>  
>>>
>>>  Rule "free food"
>>>
>>>     when
>>>
>>>         Food( $food : name == "hamburger" )
>>>
>>>         $: Person( favouriteFood == $food )
>>>
>>>     then
>>>
>>>         System.out.println( $person.getName() + " gets a hamburger" );
>>>
>>>     End
>>>
>>>  
>>>
>>> You would have
>>>
>>>  
>>>
>>> global Food food //where food is inserted as a global but populated 
>>> from a db.
>>>
>>>  
>>>
>>> Rule "free food"
>>>
>>>     when
>>>
>>>        $food : food
>>>
>>>         $person: Person( favouriteFood == $food )
>>>
>>>     then
>>>
>>>         System.out.println( $person.getName() + " gets a " + 
>>> $food.getName() );
>>>
>>>     End
>>>
>>>  
>>>
>>> Cheers,
>>>
>>>  
>>>
>>> Blair
>>>
>> No that isn't good, due to indexing. If $food changes value without the 
>> engine knowing about it, then you get a memory leak. So you have to 
>> assert the value. Globals really are for immutable vars or containers to 
>> collect results.
>>>
>>>  
>>>
>>>  
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> 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
>> 
>> 
> 
> -- 
> View this message in context:
> http://www.nabble.com/Design-Question-tp15070550p15072289.html
> Sent from the drools - user mailing list archive at Nabble.com.
> 
> _______________________________________________
> 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
> 
> 

-- 
View this message in context: http://www.nabble.com/Design-Question-tp15070550p15088141.html
Sent from the drools - user mailing list archive at Nabble.com.





More information about the rules-users mailing list