[rules-users] Chart notation, update, and infinite loops

Greg Barton greg_barton at yahoo.com
Tue Nov 4 15:29:59 EST 2008


Put it in a global variable?

--- On Tue, 11/4/08, Dan Seaver <dan.seaver at ge.com> wrote:

> From: Dan Seaver <dan.seaver at ge.com>
> Subject: Re: [rules-users] Chart notation, update, and infinite loops
> To: rules-users at lists.jboss.org
> Date: Tuesday, November 4, 2008, 2:08 PM
> Thanks Edson,
> I'm aware of "accumulate" and see how it can
> be used to solve the specific
> issue. 
> 
> I'm looking for a more generic solution for updating
> objects.
> 
> The only reason amountFact is part of the "when"
> clause is for a reference
> to the object that can be used by the "then"
> clause. It's not really part of
> the rule criteria.
> 
> If I could get a reference to it directly in the
> "then" clause, the update
> statement would not put the rule back on the agenda - which
> would be
> perfect. 
> 
> Any ideas?
> 
> Dan
> 
> Edson Tirelli-3 wrote:
> > 
> >    There are several ways of doing that, and some
> where even mentioned by
> > the other users. One easy way is to simply use
> "accumulate":
> > 
> > rule "update amount"
> >     no-loop
> > when
> >     $f : Fact( name == "amount" )
> >     Number( $total : doubleValue ) from accumulate(
> >               Charge( $amt : amount ),
> >               sum( $amt ) )
> > then
> >     modify( $f ) { setAmount( $total ) }
> > end
> > 
> >     []s
> >     Edson
> > 
> > 2008/11/4 Dan Seaver <dan.seaver at ge.com>
> > 
> >>
> >> I'm trying to find a good technique for
> updating specific facts in
> >> working
> >> memory. What I'm currently doing is something
> like this:
> >>
> >> Rule "Update Amount"
> >>   when
> >>      amountFact : Fact(name == "Amount")
> >>      charge : Charge()
> >>   then
> >>      Double amount = amountFact.getAmount();
> >>      Double chargeAmount = charge.getAmount();
> >>      amountFact.setAmount(amount + chargeAmount);
> >>      update(amountFact);
> >> end
> >>
> >> The update statement causes an infinite loop.
> >> I tried using no-loop, which works if there is 1
> charge, but not if there
> >> are more than one.
> >>
> >> Any help with solutions or strategies would be
> much appreciated.
> >> --
> >> View this message in context:
> >>
> http://www.nabble.com/Chart-notation%2C-update%2C-and-infinite-loops-tp20327483p20327483.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
> >  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/Chart-notation%2C-update%2C-and-infinite-loops-tp20327483p20330025.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


      



More information about the rules-users mailing list