[rules-users] Salience not working

Edson Tirelli tirelli at post.com
Tue May 13 19:20:44 EDT 2008


   Let me say again: this MUST give you a compilation error:

       eval(((Boolean)$itr).booleanValue() == false)

   There is no $itr bound in your rule, so, how is it possible that you are
executing your rules? Either there is a bug in the compilation process or
you are missing something...

   []s
   Edson


2008/5/13 sridhar123 <sridhar.peddinti at sabre.com>:

>
>
> Here is my drl file: It seems LHS of all rules executed first irrespective
> of salience or focus. What am i doing wrong? Appreciate your help.
>
> rule "Eval Window"
>    salience 10
>    agenda-group "Eval Window"
> //    activation-group "Eval Window"
>    auto-focus true
>        when
>        $data : AirTravelPolicyData($reqDep :
> fareRequest.requestedDeparture,
>                $reqRet : fareRequest.requestedReturn,
>                $itr : itinerary,
>                $evalWindow : policySettings.evaluationWindow,
>                $depart : departureFlight.departure,
>                $retrn : returnFlight.departure
>                )
>
>            eval ((DateUtil.subtractHours((Date)$reqDep,
> ((Integer)$evalWindow).intValue()))
>
>              .before((Date)$depart))
>       then
> // modify block sets $itr.discardable to true
>     modify($itr) {
>      setAsDiscardable()
>     }
> //     update ($data);
>     drools.setFocus("Eval carrier");
> end
>
>
> rule "Eval carrier"
>  salience 5
>  agenda-group "Eval carrier"
> // activation-group "Eval carrier"
>        when
>        $data : AirTravelPolicyData($prefCarrier :
> policySettings.preferredCarrier,
>                $carrier : departureFlight.carrier,
>                        $discard :  itinerary.discarded
>                )
> //   Eval Window rule changed discarded flag to true so this condition
> should fail but it dose not ???
>          eval(((Boolean)$itr).booleanValue() == false)
>     then
>        // But.. when i print out the discard flag here it show as true..
> In that
> case how eval condiation is passed?
>        System.out.println("*********Current Itr in Eval carrier: " +
> $discard );
>
> end
>
>
>
>
> Edson Tirelli-3 wrote:
> >
> >   This is wrong:
> >
> > $data : MyFact( $anotherObj )
> >
> >    Is the parser accepting it without any error???? If so, it is a bug.
> >    I can't even imagine what is the parsing result for such expression.
> >
> >    This is also wrong:
> >
> >   eval ($anotherObj.isDiscard() == true)
> >
> >    There is no previous binding for "$anotherObj". Only possible
> scenario
> > is
> > you defined it as a global.
> >    So, whatever you are doing and seeing, I have no idea how you can
> > execute
> > rules.
> >
> >    Can you show us the whole DRL file you are using? Can you show the
> > snippet of code you are using to execute it?
> >
> >    []s
> >    Edson
> >
> >
> >
> >
> >
> > 2008/5/13 sridhar123 <sridhar.peddinti at sabre.com>:
> >
> >>
> >> It still dosen't work as desired. Here is my code:
> >>
> >>      rule A
> >> Salience 10
> >> when
> >>  $data : MyFact( $anotherObj )
> >> then
> >>   modify(  $anotherObj ) {
> >>      setDiscard(true)
> >>   }
> >>
> >> rule B
> >> Salience 5
> >> when
> >>  eval ($anotherObj.isDiscard() == true)
> >> then
> >>  ...
> >>
> >> It seems, all When conditions are executed first irrespective of "then"
> >>
> >> I also tried with agenda group and having default focus on Rule A and
> in
> >> Then section setting focus to Rule B - still the condition doesnt
> match.
> >> When i inspect fact - after Rule A is executed, i see my flag is set to
> >> true
> >> - but not visible to Rule B.
> >>
> >> Do i need to write seperate drl files. Also, i am using eclipse 3.3 and
> >> ruleflow seems buggy i can not add any rule flow groups. do i need to
> use
> >> 3.2. I am using Drools 4.0.4
> >>
> >> thank you
> >>
> >>
> >>
> >>
> >>
> >> Alessandro Lazarotti wrote:
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > rule A
> >> >        Salience 10
> >> >  when
> >> >         $anotherObject: MyFact(discard != true)
> >> >  then
> >> >         modify($anotherObj){
> >> >                  setDiscard(true)
> >> >         }
> >> >
> >> >
> >> > "Modify" update your fact in the current working memory.
> >> >
> >> >
> >> >
> >> > sridhar123 escreveu:
> >> >
> >> >
> >> > It means, I can not fire all rules at once, I need to groups and
> change
> >> > focus in my java code?
> >> >
> >> > I couldn't find any docs or examples to properly use Salience - could
> >> you
> >> > please share an example (if you have one)
> >> >
> >> > thx
> >> >
> >> >
> >> >
> >> > Alessandro Lazarotti wrote:
> >> >
> >> >
> >> >     You need upate() the fact $anotherObj in Working Memory.
> >> >
> >> > sridhar123 escreveu:
> >> >
> >> >
> >> >       rule A
> >> > Salience 10
> >> > when
> >> >  $data : MyFact( $anotherObj )
> >> > then
> >> >   $anotherObj.setDiscard(true)
> >> >
> >> > rule B
> >> > Salience 5
> >> > when
> >> >   eval ($anotherObj.isDiscard() == true)
> >> > then
> >> >    ...
> >> >
> >> >
> >> > I am trying to get Rule A executed before Rule B. So when condition
> in
> >> > Rule
> >> > B is valid. However i dont see "Saliene" has any effect. How else i
> can
> >> > do
> >> > the above?
> >> >
> >> > thank you
> >> >
> >> >
> >> >
> >> >
> >> >     _______________________________________________
> >> > rules-users mailing list
> >> > rules-users at lists.jboss.org
> >> > https://lists.jboss.org/mailman/listinfo/rules-users
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > _______________________________________________
> >> > rules-users mailing list
> >> > rules-users at lists.jboss.org
> >> > https://lists.jboss.org/mailman/listinfo/rules-users
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Salience-not-working-tp17190028p17217969.html
> >> Sent from the drools - user mailing list archive at Nabble.com.
> >>
> >> _______________________________________________
> >> rules-users mailing list
> >> rules-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >>
> >
> >
> >
> > --
> > Edson Tirelli
> > JBoss Drools Core Development
> > Office: +55 11 3529-6000
> > Mobile: +55 11 9287-5646
> > JBoss, a division of Red Hat @ www.jboss.com
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Salience-not-working-tp17190028p17219034.html
> Sent from the drools - user mailing list archive at Nabble.com.
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
Edson Tirelli
JBoss Drools Core Development
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080513/57edeaad/attachment.html 


More information about the rules-users mailing list