OK, so here is my take on things:-
+--------------+ +----------------+ +-------------------+
| | | | | |
| Sub-system 1 |-->| Sub-system 2 |-->| Sub-system 3 uses |
| sets up data | | Rules \ Drools | | results from sub- |
+--------------+ | | | system 2 |
+----------------+ +-------------------+
I would be inclined to have List<WashRuleValueHolder > as a global in WM
and append instances of WashRuleValueHolder to the list in RHS of rules
(or a Map or something so you can retrieve what you want easily). Also
have you looked at StatelessSession.executeWithResults() - which I
haven't personally used but would give you what (I think) you need (if
stateless is acceptable too!).
Cheers,
Mike
-----Original Message-----
From: rules-users-bounces(a)lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] On Behalf Of psentosa
Sent: 12 August 2008 09:45
To: rules-users(a)lists.jboss.org
Subject: Re: [rules-users] Fetching values of an object's attribute set
bydifferent rules
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.
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users