If the bad sum after run 2 is the sum of run 1 and the correct value
of run 2, chances are that somehow the BresDetail objects of old runs
are reinserted.
(A stateFUL session retaining old BresDetails might be another reason.)
-W
On 08/03/2013, rymy8564 <ryanjmeyer(a)gmail.com> wrote:
I'm using Spring AMQP to read messages from RabbitMQ. After a
message is
read it's deserialized into one header (parent) object and multiple detail
(child) objects. Those facts are then inserted into a stateless rule
session. Finally, the updated facts are inserted into a database.
I have several rules that will aggregate the detail facts using either the
collect or accumulate functions. Here's an example.
rule "Header.TotalDuration"
when
h : BresHeader()
n : Number()
from accumulate( d : BresDetail(willSendToInvoice==true, uniqueConfID ==
h.uniqueConfID), sum(d.Duration) )
then
h.TotalDuration = new Integer(n.longValue());
System.out.println("[TotalDuration] rule ran");
end
If I run this once (reading in one message) in jUnit, the TotalDuration is
calculated correctly. If I run it in tomcat (continuously reading
messages)
the values for TotalDuration are not correct and increase after each each
pass (message is grabbed, rules ran, facts persisted, repeat) and I can't
figure out why.
Can anyone shed light on this behavior?
--
View this message in context:
http://drools.46999.n3.nabble.com/Unexpected-Accumulate-Collect-behavior-...
Sent from the Drools: User forum mailing list archive at
Nabble.com.
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users