Ok Edson, it's working fine now!

Thanks
Alesssandro


Edson Tirelli escreveu:

    Hi Alessandro, just saw your e-mail and answered to you, but basically no-loop will not work for cases like this.
    Either specify your constraints in a way they prevent the loop or use lock-on-active.

rule "Nota final das questoes"
   when
       $qr : QuestionarioResposta( $nf : notaFinal )
       $result : Number( this != $nf )
                     from accumulate( QuestaoResposta($nota:nota,$peso:questao.questaoPeso.peso)
                                          from $qr.questoesResposta,
                                          sum( $nota * (Double)$peso ) )                then
       modify( $qr ) {
              setNotaFinal($result)
       }
end

    Hope it helps.
        Edson
 

2008/5/5 Alessandro Lazarotti <alessandro@siq.com.br>:
It's a bug?

Alessandro Lazarotti escreveu:

Sorry, my code is ugly in last email...
This is more clean:

rule "The Rule"
  no-loop true
  when

      questionarioResposta : QuestionarioResposta()

       $resultFinal : Number() from accumulate(QuestaoResposta($peso:questao.questaoPeso.peso)
                                         from questionarioResposta.getQuestoesResposta(),
                                         sum( $peso ))
  then
      System.out.println($resultFinal);
      update( questionarioResposta );
end

This is a recursive and no-loop is ignored.
Who knows why this?

Thanks









Alessandro Lazarotti escreveu:
Hi
When I use accumulate and update, no-loop is ignored and the rule is
recursive.
Why?

The Rule:

rule "Nota final das questoes"
   no-loop true
   when







       questionarioResposta : QuestionarioResposta()
       $result : Number() from
accumulate(QuestaoResposta($nota:nota,$peso:questao.questaoPeso.peso)                                           from questionarioResposta.getQuestoesResposta(),                                           sum($nota * (Double)$peso))
                                                   $resultFinal : Number() from
accumulate(QuestaoResposta($nota:nota,$peso:questao.questaoPeso.peso)                                           from questionarioResposta.getQuestoesResposta(),                                           sum( $peso ))                                                                then
       System.out.println($result.doubleValue() / $resultFinal.doubleValue());         questionarioResposta.setNotaFinal($result.doubleValue() /
$resultFinal.doubleValue());
       update( questionarioResposta );
end

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

_______________________________________________
rules-users mailing list
rules-users@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@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users