Yes, probably the constructor should set level'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"><<a href="mailto:manstis1@ford.com">manstis1@ford.com</a>></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'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 "priority" 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'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's good to see and understand other'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'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 "trader
and product"<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=="Alex", product ==
"GOOG" )<br>then<br> $s.setCount( $s.getCount() + 1
);<br> $s.setBook( "B2" );<br>end<br><br>Then you'll need a couple
of rules handling success and failure:<br><br>rule "post level
success"<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 "post level
failure"<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 "gone down" through all
levels.<br><br>-W<br><br><br><br>
<div class="gmail_quote">2009/10/28 Costigliola Joel (EXT) <span dir="ltr"><<a href="mailto:joel.costigliola-ext@natixis.com" target="_blank">joel.costigliola-ext@natixis.com</a>></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'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'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's the Agenda
responsibility to take this decision, but I don'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>