Yes, probably the constructor should set level's initial value, unless it is OK to have it as a constant, initializing the field directly.
Thanks for pointing is out. -W 2009/10/29 Anstis, Michael (M.) <[email protected]> > Hi Wolfgang, > > 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!) > > 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. > > I 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)? > > It's good to see and understand other's approaches. > > Cheers, > > Mike > > ------------------------------ > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Wolfgang Laun > *Sent:* 29 October 2009 07:09 > *To:* Rules Users List > *Subject:* Re: [rules-users] Specific Agenda strategy to control which > rulesto fire > > I don't think you should consider an agenda strategy for this. > > Add a simple class: > class Score{ > int level; int coun; Deal deal; Book book; > Score( Deal deal, int level ){...} > } > > and insert an instance along with the Deal to be classified: > > insert( deal ); > insert( new Score( deal ) ); > > Rules for level 2 would be written according to: > > rule "trader and product" > salience 10 > when > $s : Score( level == 2, $d : deal ) > Deal( this == $d, trader=="Alex", product == "GOOG" ) > then > $s.setCount( $s.getCount() + 1 ); > $s.setBook( "B2" ); > end > > Then you'll need a couple of rules handling success and failure: > > rule "post level success" > salience 5 > when > $s : Score( $l : level, count == 1, $d : deal, $b : book ) > then > assign $d to $b, retract $d > retract( $s ); > end > > rule "post level failure" > salience 5 > when > $s : Score( $l : level, count != 1 ) > then > modify( $s ){ > setLevel( $l - 1 ); > } > end > > Rules for level 1 would also be at salience 10. > > A rule for level == 0 should catch Deals "gone down" through all levels. > > -W > > > > 2009/10/28 Costigliola Joel (EXT) <[email protected]> > >> Hello all, >> >> >> >> I need some help to to set a specific Agenda strategy in order to control >> finely which activated rules will be fired. >> >> >> >> Problem context : >> >> ----------------- >> >> 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”. >> >> Booking is done according to booking criteria : which trader has made the >> deal ? on which product ? wich market ? etc … >> >> 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. >> >> I want to implement booking rule as Drools rule. >> >> Several booking rule can be applied to a deal, in that case choosing the >> right booking rule to fire depends on the following algorithm : >> >> - look all the activated booking rule of the highest priority, >> >> --- if there is a unique rule apply it >> >> --- if there is no unique rule (0 rule or more than one), look at rules of >> a lesser priority and apply the same logic. >> >> >> >> Next section is an example that will clear things (I hope). >> >> >> >> Example : >> >> --------- >> >> A deal D1 has been done by Alex on NY market to buy Google stocks. >> >> We have 3 booking rules : >> >> - BR1 : criteria = trader=Alex / book = B1 >> >> - BR2 : criteria = trader=Alex and product = google stock / book = B2 >> >> As BR2 is more precise than BR1, il will matches the deal and book it in >> B1 >> >> If the deal was on another product, BR1 would have been applied. >> >> >> >> Things gets more complicated when 2 rules of same priority can be applied. >> >> >> Let's imagine we add the following booking rule >> >> - BR3 : criteria = trader=Alex and market = NY / book = B3 >> >> We have a problem to book D1 since BR2 and BR3 can be applied but have >> same priority. >> >> We can't choose one over the other thus we must apply a less >> precise/prioritary rule (if unique at its own precision level). >> >> In my example, that would lead to apply BR1. >> >> >> >> Question : >> >> ---------- >> >> If I define BR1,BR2,BR3 as Drools rules, how can I tell Drools : >> >> - to execute a rule only if there is no other active rule with same >> precision that could be applied ? >> >> - to look for a unique matching rule with less precision level ? >> >> >> >> I think it's the Agenda responsibility to take this decision, but I don't >> know how implement that. >> >> Can you give some advices on that ? >> >> >> >> Thanks for your lights in advance, >> >> Regards, >> >> >> >> Joel >> >> >> >> >> ------------------------------ >> >> 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. >> >> 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. >> >> ------------------------------ >> >> >> _______________________________________________ >> rules-users mailing list >> [email protected] >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > >
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
