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

Edson Tirelli tirelli at post.com
Tue Nov 4 14:13:36 EST 2008


   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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20081104/3f46a7b3/attachment.html 


More information about the rules-users mailing list