Hi all,
 
It seems to me that the no-loop only prevents a rule from triggering
itself - and doesn't make the rule only fire once (which is what I'm
after)
 
e.g. consider the following two contrived simple rules:
 

        rule "addPriorityPrefix"
         dialect "java"
         no-loop true
         when
          $work : Work (priority >= 200)
         then
          modify($work) {
           setTitle("!!! " + getTitle());
          };
        end
         
        rule "re-assign low priority tasks"
         dialect "java"
         no-loop true
         when
          $work : Work (priority < -200)
         then
          modify($work) {
           setOwner("nobody");
          };
        end

 
What I end up with is an infinte loop.  
 
Whilst for the simple case I can re-write them like 
    $work : Work (priority >= 200, !title.startWith("!!!"))

however with the more complex rules this makes the rules get very
complex quickly and less easy to write. Is there a way to prevent these
loops - have I misunderstood or do you really need to check everything
in the rule that you may set?
 
How would you do the banking interest example?

        rule "interest calculation"
          no-loop
          when
            $account : Account( )
          then
            modify($account) {
              setBalance((long)($account.getBalance() * 1.01) )
            };
        end

 
if there was another rule that if you where a gold customer and payed in
> $500 the previous month then you get $4 bonus?

        rule "gold bonus"
          no-loop
          when
            $account : Account(type="gold", previousMonthDeposit > 500 )
          then
            modify($account) {
              setBalance((long)($account.getBalance() + 4) )
            };
        end

 
Regards,
 
    /James

**************************************************************************************
This message is confidential and intended only for the addressee. If you have 
received this message in error, please immediately notify the 
[email protected] and delete it from your system as well as any copies. The 
content of e-mails as well as traffic data may be monitored by NDS for 
employment and security purposes. To protect the environment please do not 
print this e-mail unless necessary.

NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, 
United Kingdom. A company registered in England and Wales. Registered no. 
3080780. VAT no. GB 603 8808 40-00
**************************************************************************************
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to