I don&#39;t think you should consider an agenda strategy for this.<br><br>Add a simple class:<br>   class Score{<br>     int level; int coun; Deal deal; Book book; <br>     Score( Deal deal, int level ){...} <br>  }<br><br>
and insert an instance along with the Deal to be classified:<br><br>insert( deal );<br>insert( new Score( deal ) );<br><br>Rules for level 2 would be written according to:<br><br>rule &quot;trader and product&quot;<br>salience 10<br>
when<br><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">   $s : Score( level == 2, $d : deal )<br></span></font>    Deal( this == $d, <font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">trader==&quot;Alex&quot;, product == &quot;GOOG&quot; )<br>
then<br>   $s.setCount( $s.getCount() + 1 );<br>   $s.setBook( &quot;B2&quot; );<br>end<br><br>Then you&#39;ll need a couple of rules handling success and failure:<br><br>rule &quot;post level success&quot;<br>salience 5<br>
when<br>   $s : Score( $l : level, count == 1, $d : deal, $b : book )<br>then<br>   assign $d to $b, retract $d<br>   retract( $s );<br>end <br></span></font><br><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">rule &quot;post level failure&quot;<br>

salience 5<br>
when<br>
   $s : Score( $l : level, count != 1 )<br>
then<br>
   modify( $s ){<br>       setLevel( $l - 1 );<br>   }<br>
end </span></font><br><br>Rules for level 1 would also be at salience 10.<br><br>A rule for level == 0 should catch Deals &quot;gone down&quot; through all levels.<br><br>-W<br><br><br><br><div class="gmail_quote">2009/10/28 Costigliola Joel (EXT) <span dir="ltr">&lt;<a href="mailto:joel.costigliola-ext@natixis.com">joel.costigliola-ext@natixis.com</a>&gt;</span><br>
<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="FR">
<div>
<div>

<div>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Hello all,</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">I need some help to to set a specific Agenda
strategy in order to control finely which activated rules will be fired.</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Problem context :</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">-----------------</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">My company is a bank where traders are making deals
on markets, these deals must be classified in book, this is what we call
“booking process”.</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Booking is done according to booking criteria :
which trader has made the deal ? on which product ? wich market ? etc … </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">A booking rule defines a set of criteria and the
target book where the deal will classified, it also has a priority, note that
it is ok that two booking rule have same priority. </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">I want to implement booking rule as Drools rule.</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Several booking rule can be applied to a deal, in
that case choosing the right booking rule to fire depends on the following
algorithm : </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">- look all the activated booking rule of the
highest priority, </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">--- if there is a unique rule apply it</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">--- if there is no unique rule (0 rule or more than
one), look at rules of a lesser priority and apply the same logic.</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Next section is an example that will clear things
(I hope).</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Example :</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">---------</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">A deal D1 has been done by Alex on NY market to buy
Google stocks.</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">We have 3 booking rules : </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">- BR1 : criteria = trader=Alex / book = B1</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">- BR2 : criteria = trader=Alex and product = google
stock / book = B2</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">As BR2 is more precise than BR1, il will matches
the deal and book it in B1</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">If the deal was on another product, BR1 would have
been applied.</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Things gets more complicated when 2 rules of same
priority can be applied. </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Let&#39;s imagine we add the following booking rule </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">- BR3 : criteria = trader=Alex and market = NY /
book = B3</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">We have a problem to book D1 since BR2 and BR3 can
be applied but have same priority. </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">We can&#39;t choose one over the other thus we must
apply a less precise/prioritary rule (if unique at its own precision level).</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">In my example, that would lead to apply BR1.</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Question :</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">----------</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">If I define BR1,BR2,BR3 as Drools rules, how can I
tell Drools : </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">- to execute a rule only if there is no other
active rule with same precision that could be applied ?</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">- to look for a unique matching rule with less
precision level ?</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">I think it&#39;s the Agenda responsibility to take this
decision, but I don&#39;t know how implement that.</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Can you give some advices on that ?</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Thanks for your lights in advance,</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;">Regards,</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;"> </span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;">Joel</span></font></p>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;"> </span></font></p>

<p class="MsoNormal"><font face="Times New Roman" size="3"><span style="font-size: 12pt;"> </span></font></p>

</div>

 </div>
<div>
</div>
<div>
<hr>
</div>
<div align="justify">
<font color="gray" face="Arial" size="1"><span style="font-size: 12pt;"><font face="Arial">
<font color="#000000" face="Times New Roman" size="3">
</font>
</font></span></font> </div>
<div align="justify">
<font color="gray"><span style="font-size: 12pt;"><font color="#000000" size="2">Ce courriel et toutes les pièces jointes sont confidentiels et peuvent être couverts par un privilège ou une protection légale. Il est établi à l’attention exclusive de ses destinataires. Toute utilisation de ce courriel non conforme à sa destination, toute diffusion ou toute publication, totale ou partielle, est interdite, sauf autorisation expresse préalable. Toutes opinions exprimées dans ce courriel ne sauraient nécessairement refléter celle de Natixis, de ses filiales. Elles sont aussi susceptibles de modification sans notification préalable. Si vous recevez ce courriel par erreur, merci de le détruire et d’en avertir immédiatement l’expéditeur. L’Internet ne permettant pas d’assurer l’intégrité de ce courriel, Natixis décline toute responsabilité s’il a été altéré, déformé ou falsifié et chaque destinataire qui utilise ce mode de communication est supposé en accepter les risques.</font></span></font>
</div>
<div align="justify">
<font color="gray"><span style="font-size: 12pt;"></span></font> </div>
<div align="justify">
<font color="gray"><span style="font-size: 12pt;"></span></font>
<font color="gray"><span style="font-size: 12pt;"><font color="#000000" size="2">This email and any attachment are confidential and may be legally privileged or otherwise protected from disclosure. It is intended only for the stated addressee(s) and access to it by any other person(s) is unauthorised. Any use, dissemination or disclosure not in accordance with its purpose, either in whole or in part, is prohibited without our prior formal approval. Any opinion expressed in this email may not necessarily reflect the opinion of Natixis, its affiliates. It may also be subject to change without prior notice. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this email. If you have received it in error, please inform us immediately and delete all copies. The Internet can not guarantee the integrity of this email therefore Natixis shall not be liable for the email if altered, changed or falsified and anyone who communicates with us by e-mail is taken to accept these risks.</font></span></font>
</div>
<p class="MsoNormal" align="justify">
</p><hr>

<p>
</p>
<p>
</p>

</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>