gpt4 book ai didi

java - Drools 5.1.1 意外的累积和收集行为

转载 作者:行者123 更新时间:2023-12-01 04:49:07 25 4
gpt4 key购买 nike

我正在使用 Spring AMQP 从 RabbitMQ 读取消息。读取消息后,它会被反序列化为一个 header (父)对象和多个详细信息(子)对象。然后,这些事实将被插入到 Drools 无状态规则 session 中。最后,更新的事实被插入到数据库中。

我有几条规则,可以使用收集或累积函数来聚合详细事实。这是一个例子。

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

如果我在 jUnit 中运行一次(读取一条消息),则 TotalDuration 计算正确。如果我在 tomcat 中运行它(连续读取消息),TotalDuration 的值不正确,并且在每次传递后都会增加(消息被抓取、规则运行、事实持续存在、重复),我不明白为什么。

任何人都可以阐明这种行为吗?

最佳答案

也许您有一个静态变量,它继续将以前消息中的事实传递到新消息中。

关于java - Drools 5.1.1 意外的累积和收集行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com