<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Hi everybody,</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">I followed all the topics about globals and the fact that they are immutables.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">I also understood that once we decide to reason over globals, it&#39;s</font></div>
<div><font face="Arial" size="2">time we no more use them and we start to use simple WM facts.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Now...</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">I tell you my scenario.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">I have got two globals.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">A &quot;request&quot; global and a &quot;reply&quot; global. The first one is a &quot;Request&quot; java instance </font></div>
<div><font face="Arial" size="2">and the second one is a &quot;Reply&quot; java instance. They belong to the Object model</font></div>
<div><font face="Arial" size="2">I designed.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">My&nbsp;application makes a request to the rule engine passing it a &quot;request&quot; as global,<br>and get back a reply from it receiving a modified &quot;reply&quot;&nbsp; global.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">I use a ruleflow to execute the rules.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">I think everything would be perfect and smooth if I had not the need to reason</font></div>
<div><font face="Arial" size="2">over the reply during the rule session....</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2"><strong>That&#39;s the point!</strong></font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">I do not just need to modify the &quot;reply&quot; global in order to get the final value <u>outside</u></font></div>
<div><font face="Arial" size="2"><u>the rule engine</u>, but I DO need to reason over it <u>INSIDE</u> the rule session.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2"><strong>So.... what should I do in order to reason over the reply <u>INSIDE AND OUTSIDE</u> </strong></font></div>
<div><font face="Arial" size="2"><strong>the Rule Session?</strong></font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Should I insert the &quot;reply&quot; global into the WM?</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Let assume I do that, what happen if I pass the &quot;reply&quot; global to</font></div>
<div><font face="Arial" size="2">a drools function which alters the &quot;reply&quot;?</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Imagine a rule as follows and imagine I previously inserted the &quot;reply&quot; global into the WM:</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">----</font></div>
<div><font face="Arial" size="2">...</font></div>
<div><font face="Arial" size="2">global my.object.model.Reply reply</font></div>
<div><font face="Arial" size="2">...</font></div>
<div><font face="Arial" size="2">rule &quot;addcriminal_2_reply&quot;</font></div>
<div><font face="Arial" size="2">&nbsp; when</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp;$p: Person(job==&quot;criminal&quot;)</font></div>
<div><font face="Arial" size="2">&nbsp; then</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp; addCriminaltoReply(reply, $p&nbsp;);</font></div>
<div><font face="Arial" size="2">end</font></div>
<div><font face="Arial" size="2">----</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Will this alteration affect the corresponding Reply() fact in the WM as well?</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Now let see this other rule:</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">(Same, let imagine i previously inserted: insert(reply); )</font></div>
<div><font face="Arial" size="2">----</font></div>
<div><font face="Arial" size="2">global my.object.model.Reply reply</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">
<div><font face="Arial" size="2">rule &quot;FullFill_replyCode&quot;</font></div>
<div><font face="Arial" size="2">&nbsp; when</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp; $r: Reply(code==&quot;john.wayne&quot;) from reply</font></div>
<div><font face="Arial" size="2">&nbsp; then</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp; $r.code.name = john;</font></div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; $r.code.lastname = wayne;</div>
<div><font face="Arial" size="2">end</font></div>
<div><font face="Arial" size="2">----</font></div></font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">If I execute this rule in a ruleflow, do i need to &quot;update($r)&quot;</font></div>
<div><font face="Arial" size="2">in order to get&nbsp;the modified $r value in the next ruleflow node?</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">And what happens to the global??? Will it get modified as well?</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">I am sure you can help me.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Bye bye.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Massi</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>