[rules-users] Accumulate x No-loop
Edson Tirelli
tirelli at post.com
Mon May 5 12:53:48 EDT 2008
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 at 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 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
> >
> > _______________________________________________
> 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/20080505/15afcad0/attachment.html
More information about the rules-users
mailing list