<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco">Hi,</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco">I'm using drools expert. When I insert the User object again in the session, after modifying the member variable 'trades' (details mentioned below) the rule doesn't get evaluated. It evaluate the rules only during the 1st insert. Is there a way to trigger the rule evaluation after every insert of the same object (when state is modified)?</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><br></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"> I've following declaration and rule.</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><font class="Apple-style-span" color="#B70000">------------</font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span
style="color: #b70000">declare</span> User </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"> @timestamp(datetime) </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"> name : String</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"> trades: Integer </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000">end</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000"><br></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #009700"><span style="color: #b70000">rule</span><span style="color: #000000"> </span>"Trades"<span style="color: #000000"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000">when<span style="color: #000000"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"> $u:User(trades >= 3)</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000">then</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"> System.out.println(<span style="color: #009700">"Trades > 3 for "</span>+ $u.getName());</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000">end<span style="color: #000000"> </span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000"><span style="color: #000000">----------</span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000"><span style="color: #000000">Following is the piece of code:</span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000"><span style="color: #000000"><br></span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000"><span style="color: #000000"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco">StatefulKnowledgeSession session = s.<span style="color: #2700ce">kbase</span>.newStatefulKnowledgeSession();</p></span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000"><span style="color: #000000"><p style="margin: 0.0px
0.0px 0.0px 0.0px; font: 11.0px Monaco">String[] names = <span style="color: #a10067">new</span> String[]{<span style="color: #5100ff">"bob"</span>, <span style="color: #5100ff">"sam"</span>, <span style="color: #5100ff">"john"</span>};</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco">FactType userType = s.<span style="color: #2700ce">kbase</span>.getFactType(<span style="color: #5100ff">"com.sample"</span>, <span style="color: #5100ff">"User"</span> );</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><br></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco">Map<String, Object> name2user = <span style="color: #a10067">new</span> HashMap<String, Object>();</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #a10067">for</span>( String name: names ){ </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">                        </span>Object u = userType.newInstance();</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">                        </span>userType.set(u, <span style="color: #5100ff">"name"</span>, name);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">                        </span>name2user.put(name, u);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>}</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><br></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco">userType.set(name2user.get(<span style="color: #5100ff">"bob"</span>), <span style="color: #5100ff">"trades"</span>, 1);</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco">session.insert(name2user.get(<span style="color: #5100ff">"bob"</span>));</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco">session.fireAllRules();</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><br></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><p style="margin:
0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span style="text-decoration: underline">userType</span>.set(name2user.get(<span style="color: #5100ff">"bob"</span>), <span style="color: #5100ff">"trades"</span>, 3);</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">session.insert(name2user.get(<span style="color: rgb(81, 0, 255); ">"bob"</span>));</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">// this insert doesn't evaluate the rule and hence the </p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">// condition <span class="Apple-style-span" style="color: rgb(183, 0, 0); ">$u:User(trades >= 3) is not checked</span></p><p
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-style-span" style="color: rgb(183, 0, 0); "><br></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">session.fireAllRules();</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">Thanks & Regards,</p><p style="margin-top:
0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">Neelesh</p><p></p></p></p></p></p></p></p></p></span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #b70000"><span style="color: #000000"><br></span></p></p></td></tr></table>