Yes, probably the constructor should set level&#39;s initial value, unless it is OK to have it as a constant, initializing the field directly. <br><br>Thanks for pointing is out.<br>-W<br><br><div class="gmail_quote">2009/10/29 Anstis, Michael (M.) <span dir="ltr">&lt;<a href="mailto:manstis1@ford.com">manstis1@ford.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>
<div dir="ltr" align="left"><span><font size="2" color="#0000ff" face="Arial">Hi Wolfgang,</font></span></div>
<div dir="ltr" align="left"><span><font size="2" color="#0000ff" face="Arial"></font></span> </div>
<div dir="ltr" align="left"><span><font size="2" color="#0000ff" face="Arial">I&#39;m interested with your reply and am trying to better 
understand it (although the use-case has nothing to do with what I 
do!)</font></span></div>
<div dir="ltr" align="left"><span><font size="2" color="#0000ff" face="Arial"></font></span> </div>
<div dir="ltr" align="left"><span><font size="2" color="#0000ff" face="Arial">The Score class has a constructor taking Deal and level 
(assume to be akin to &quot;priority&quot; in the original post); however your example 
Fact insertions exclude level for the Score Fact. </font></span></div>
<div dir="ltr" align="left"><span><font size="2" color="#0000ff" face="Arial"></font></span> </div>
<div dir="ltr" align="left"><span></span><font face="Arial"><font color="#0000ff"><font size="2">I<span> 
assume Score&#39;s level should be initially set to the highest (most granular) 
level; e.g. 2 in the example cited (ranging from 
0-2)?</span></font></font></font></div>
<div><font face="Arial"><font color="#0000ff"><font size="2"><span></span></font></font></font> </div>
<div><font face="Arial"><font color="#0000ff"><font size="2"><span>It&#39;s good to see and understand other&#39;s 
approaches.</span></font></font></font></div>
<div><font face="Arial"><font color="#0000ff"><font size="2"><span></span></font></font></font> </div>
<div><font face="Arial"><font color="#0000ff"><font size="2"><span>Cheers,</span></font></font></font></div>
<div><font face="Arial"><font color="#0000ff"><font size="2"><span></span></font></font></font> </div>
<div><font face="Arial"><font color="#0000ff"><font size="2"><span>Mike</span></font></font></font></div>
<blockquote style="margin-right: 0px;">
  <div dir="ltr" align="left" lang="en-us">
  <hr>
  <font size="2" face="Tahoma"><b>From:</b> <a href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">rules-users-bounces@lists.jboss.org</a> 
  [mailto:<a href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">rules-users-bounces@lists.jboss.org</a>] <b>On Behalf Of </b>Wolfgang 
  Laun<br><b>Sent:</b> 29 October 2009 07:09<br><b>To:</b> Rules Users 
  List<br><b>Subject:</b> Re: [rules-users] Specific Agenda strategy to control 
  which rulesto fire<br></font><br></div><div><div></div><div class="h5">
  <div></div>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 size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">   $s : 
  Score( level == 2, $d : deal )<br></span></font>    Deal( this 
  == $d, <font size="2" face="Verdana"><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 size="2" face="Verdana"><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" target="_blank">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 vlink="purple" link="blue" lang="FR">
    <div>
    <div>
    <div>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Hello all,</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"></span></font> </p>
    <p class="MsoNormal"><font size="2" face="Verdana"><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 size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"></span></font> </p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Problem context 
    :</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">-----------------</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"></span></font> </p>
    <p class="MsoNormal"><font size="2" face="Verdana"><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 size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"></span></font> </p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Example :</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">---------</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><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 size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">We have 3 booking rules : 
    </span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">- BR1 : criteria = trader=Alex 
    / book = B1</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"></span></font> </p>
    <p class="MsoNormal"><font size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"></span></font> </p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Question :</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">----------</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"></span></font> </p>
    <p class="MsoNormal"><font size="2" face="Verdana"><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 size="2" face="Verdana"><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 size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"></span></font> </p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Thanks for your lights in 
    advance,</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">Regards,</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;"></span></font> </p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;">Joel</span></font></p>
    <p class="MsoNormal"><font size="2" face="Verdana"><span style="font-size: 10pt; font-family: Verdana;"></span></font> </p>
    <p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size: 12pt;"></span></font> </p></div></div>
    <div></div>
    <div>
    <hr>
    </div>
    <div align="justify"><font size="1" color="gray" face="Arial"><span style="font-size: 12pt;"><font face="Arial"><font size="3" color="#000000" face="Times New Roman"></font></font></span></font> </div>
    <div align="justify"><font color="gray"><span style="font-size: 12pt;"><font size="2" color="#000000">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 size="2" color="#000000">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" target="_blank">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></div></div></blockquote></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>