[rules-users] Fetching values of an object's attribute set by different rules

psentosa psentosa at yahoo.com
Tue Aug 12 04:44:31 EDT 2008


Thank you Mike and Kris for the answer.
So I'll give it a try again to explain :)

The rules I described have information that I need to go further with my
application,
i.e. with the wash example, when rule A fires, it'll give information about
the washing instruction regarding the temperature and detergent.
Now, let's say, I have another block of codes apart from this RE-part, which
needs those information (.e.g a WashMachine Object). These info should only
be defined within the rules. So my question before was, how can I pass those
to my washMachine?
That's why idea was to insert a new/empty value holder, set the value to the
holder when the rule fire, and I can use the value holder (which already
contains value/has info from the fired rules).
I'm not sure if using such a ValueHolder is the best way to fetch some
values set within the rules.
I hope this is clearer now, and any idea would be great!
Thanks in advance

Paul 





psentosa wrote:
> 
> Hi, 
> 
> I have the following problems:
> I need to prove an object based on certain rules, where the parts of the
> rules should be kept to be used in further process within my application.
> In order to fetch those parts, my idea was to insert an additional object
> as value holder for the rule's parts,
> put values on them when the corresponding rule is fired, so that later on
> I can process those value holder after my appl gets the control back from
> Ruleengine.
> 
> 
> The example below:
> 
> Shirt shirt = new Shirt(...)
> WashRuleValueHolder holder = new WashRuleValueHolder();
> 
> session.insert(shirt);
> session.insert(holder);
> ......
> 
> session.dispose()
> 
> System.out.println(holder.getTemperature());
> System.out.println(holder.getDetergent());
> =======================
> 
> rule A
> when
>       Shirt (dirtinessLevel == high)
>       $holder : WashRuleValueHolder()
> then
>       System.out.println ("this cloth should be washed in 60 degree water
> with 1 spoon of detergent")
>      $holder.temperature = 60;
>      $holder.detergent = 1;
> 
> rule B
> when
>      Shirt(material == satin)
>      $holder : WashRuleValueHolder()
> then
>        System.out.println ("this cloth should be washed in 30 degree water
> with 0,5 spoon of detergent")
>      $holder.temperature = 30;
>      $holder.detergent = 0,5;
> 
> Now, in case both rules evaluate to true, I'd have problem with my
> valueholder, bcs depending on which one of the rules was fired latest,
> that'd be the value I got from the holder, and I need both of them.
> So, my questions:
> 
> - Is using such a value holder a good solution to fetch the rules' value?
> Or is there any better solution?
> - How to handle this problem of multiple value association to the holder,
> so I still can get all the values without one overwriting the other and
> they are still connected?
> 
> Any idea highly appreciated, thanks in advance!
> 
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Fetching-values-of-an-object%27s-attribute-set-by-different-rules-tp18922201p18940166.html
Sent from the drools - user mailing list archive at Nabble.com.




More information about the rules-users mailing list