This ought to be another thread/another subject.<br><br>2011/12/26 Zhuo Li <span dir="ltr">&lt;<a href="mailto:milanello1998@gmail.com">milanello1998@gmail.com</a>&gt;</span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">









<div link="blue" vlink="purple" lang="ZH-CN">

<div>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">Any question is also
about performance consideration. See below example:<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">Rule &ldquo;1&rdquo;<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dialect
&ldquo;mvel&rdquo;<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Salience
300<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No-loop
true<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; When<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $acctsrc:
data(sourceid==1)<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $reposrc:
data((sourceid==2||sourceid==5)&amp;&amp;amount==acctsrc.amount)<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Then<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &hellip;<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">Two questions here:<u></u><u></u></span></p>

<p style="margin-left:18pt"><u></u><span style="color:rgb(31,73,125)" lang="EN-US"><span>1.<span style="font-family:&quot;Times New Roman&quot;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><u></u><span style="color:rgb(31,73,125)" lang="EN-US">In this
kind of join conditions, is there any best practice to follow in the rule? I
heard from somebody that I need to put data who have less # of transactions
first in my when expression. For example, if I have less number of $reposrc
transactions in facts, I should put it ahead of $acctsrc to gain better
performance. Is this valid?</span></p></div></div></blockquote><div>Correct: narrowing down the number of joins is best practice.<br>&nbsp;</div><blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
<div link="blue" vlink="purple" lang="ZH-CN"><div><p style="margin-left:18pt"><span style="color:rgb(31,73,125)" lang="EN-US"><u></u><u></u></span></p>

<p style="margin-left:18pt"><u></u><span style="color:rgb(31,73,125)" lang="EN-US"><span>2.<span style="font-family:&quot;Times New Roman&quot;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><u></u><span style="color:rgb(31,73,125)" lang="EN-US">Do we
know how to create an event listener in the rule for logging purpose rather
than standard log4j? It was recommended in some other articles as well. Is this
also valid? (<a href="http://www.technologyblue.com/docs/presentations/DroolsBestPractices.pdf" target="_blank">http://www.technologyblue.com/docs/presentations/DroolsBestPractices.pdf</a>);</span></p></div></div></blockquote>
<div>An event listener as provided by Drools for rule and WM events is not to be confused with a logging service, so your question doesn&#39;t make much sense. The big difference is that a listener gets informed about all it is set up to listen to, whereas calls to Looger.info() need to be written wherever logging should be done. This could be in listener code reacting to an event, or anyplace else, as in the RHS of some rules in the quoted presentation.<br>
</div><blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex"><div link="blue" vlink="purple" lang="ZH-CN"><div><p style="margin-left:18pt"><span style="color:rgb(31,73,125)" lang="EN-US"><u></u><u></u></span></p>


<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">Ultimately, is there
any place I can find a best practice of rule development as a generic guide?</span></p></div></div></blockquote><div><br>Not a single place that I know of. Perhaps if you post this as a separate thread with a fitting topic.<br>
&nbsp;<br>-W<br></div><blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex"><div link="blue" vlink="purple" lang="ZH-CN"><div><p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US"><u></u><u></u></span></p>


<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">Best<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US">Abe<u></u><u></u></span></p>

<p class="MsoNormal"><span style="color:rgb(31,73,125)" lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<div>

<div style="border-style:solid none none;border-color:rgb(181,196,223) -moz-use-text-color -moz-use-text-color;border-width:1pt medium medium;padding:3pt 0cm 0cm">

<p class="MsoNormal" style="text-align:left" align="left"><b><span>发件人<span lang="EN-US">:</span></span></b><span lang="EN-US"> Zhuo Li
[mailto:<a href="mailto:milanello1998@gmail.com" target="_blank">milanello1998@gmail.com</a>] <br>
</span><b><span>发送时间<span lang="EN-US">:</span></span></b><span lang="EN-US"> 2011</span><span>年<span lang="EN-US">12</span>月<span lang="EN-US">26</span>日<span lang="EN-US"> 16:51<br>
</span><b>收件人<span lang="EN-US">:</span></b><span lang="EN-US"> &#39;Rules Users List&#39;<br>
</span><b>主题<span lang="EN-US">:</span></b><span lang="EN-US"> Performance
consideration in rule writing<u></u><u></u></span></span></p>

</div>

</div><div><div class="h5">

<p class="MsoNormal" style="text-align:left" align="left"><span lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">Hi, team,<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">I have some quick questions here regarding
performance best practices of rule writing. See below two pieces of rules:<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">Rule &ldquo;1&rdquo;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Salience 100<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
No-loop true<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
When $txn : data(sourceid == 5&amp;&amp;txnjustify==&rdquo;995&rdquo;&amp;&amp;eval(creditOption($txn)==1)&amp;&amp;eval(isGCSwitch($txn))&amp;&amp;isCurrencyEquals($txn)==0&amp;&amp;compareToPostThreshold($txn)==2);<u></u><u></u></span></p>


<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Then<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&hellip;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
End<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">Rule &ldquo;2&rdquo;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Salience 100<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
No-loop true<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
When $txn : data(sourceid ==
5&amp;&amp;txnjustify==&rdquo;995&rdquo;&amp;&amp;eval(creditOption($txn)==1)&amp;&amp;eval(isGCSwitch($txn))&amp;&amp;isCurrencyEquals($txn)==0&amp;&amp;compareToPostThreshold($txn)==1);<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Then<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &hellip;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
End<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">Questions:<u></u><u></u></span></p>

<p style="margin-left:18pt"><u></u><span lang="EN-US"><span>1.<span style="font-family:&quot;Times New Roman&quot;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><u></u><span lang="EN-US">Will I gain better performance
if I put the rule differentiator condition &ldquo;compareToPostThreshold($txn)==2&rdquo; at
the beginning of both rule 1 and 2? <u></u><u></u></span></p>

<p style="margin-left:18pt"><u></u><span lang="EN-US"><span>2.<span style="font-family:&quot;Times New Roman&quot;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><u></u><span lang="EN-US">I saw salaboy&rsquo;s video claiming
that to avoid using eval() in the rule. Do we have any alternative way to do
that from a performance consideration or I&rsquo;d better collect/ prepare all the
data before I send them into the session?<u></u><u></u></span></p>

<p style="margin-left:18pt"><u></u><span lang="EN-US"><span>3.<span style="font-family:&quot;Times New Roman&quot;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><u></u><span lang="EN-US">What&rsquo;s you guys&rsquo; naming
convention for rule&rsquo;s salience?<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">PS: my Drools version is 5.2.0.<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US"><u></u>&nbsp;<u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">Best regards<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">Abe<u></u><u></u></span></p>

</div></div></div>

</div>


<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br>