[rules-users] Globals asserted as facts... how to modify them...

mmquelo massi mmquelo at gmail.com
Sat Feb 16 07:00:35 EST 2008


Hi everybody,

I followed all the topics about globals and the fact that they are
immutables.

I also understood that once we decide to reason over globals, it's
time we no more use them and we start to use simple WM facts.

Now...

I tell you my scenario.

I have got two globals.

A "request" global and a "reply" global. The first one is a "Request" java
instance
and the second one is a "Reply" java instance. They belong to the Object
model
I designed.

My application makes a request to the rule engine passing it a "request" as
global,
and get back a reply from it receiving a modified "reply"  global.

I use a ruleflow to execute the rules.

I think everything would be perfect and smooth if I had not the need to
reason
over the reply during the rule session....

*That's the point!*

I do not just need to modify the "reply" global in order to get the final
value *outside*
*the rule engine*, but I DO need to reason over it *INSIDE* the rule
session.

*So.... what should I do in order to reason over the reply INSIDE AND
OUTSIDE *
*the Rule Session?*

Should I insert the "reply" global into the WM?

Let assume I do that, what happen if I pass the "reply" global to
a drools function which alters the "reply"?

Imagine a rule as follows and imagine I previously inserted the "reply"
global into the WM:

----
...
global my.object.model.Reply reply
...
rule "addcriminal_2_reply"
  when
    $p: Person(job=="criminal")
  then
     addCriminaltoReply(reply, $p );
end
----

Will this alteration affect the corresponding Reply() fact in the WM as
well?


Now let see this other rule:

(Same, let imagine i previously inserted: insert(reply); )
----
global my.object.model.Reply reply

 rule "FullFill_replyCode"
  when
     $r: Reply(code=="john.wayne") from reply
  then
     $r.code.name = john;
     $r.code.lastname = wayne;
end
----

If I execute this rule in a ruleflow, do i need to "update($r)"
in order to get the modified $r value in the next ruleflow node?

And what happens to the global??? Will it get modified as well?

I am sure you can help me.

Bye bye.

Massi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080216/810c1737/attachment.html 


More information about the rules-users mailing list