Drools - 使用累加找到最小值和最大值

标签 drools

我有一个口水问题困扰了我一段时间。我想使用累加从 Item 对象(包含价格)列表中找出最低和最高价格。插入包含项目列表的成员对象(包含项目对象列表)。

groovy/java source pseudo code
-------------------------------
class Item {
   BigDecimal price
}

class Member {
   List<Item>> items
}

...
droolsStatefulSession.insert(member)
session.fireAllRules()
...

rule.drl
---------
rule "rule1"
when 
   member : Member ($itemList : items)
/*

*/
then
 System.out.println("condition met...")
end

现在问题是在上面的规则中,如果是这样,我如何使用流口水累积功能找出具有最低价格和最高价格的项目。我不想使用 java/groovy 实用程序函数。

我看到“收集”功能允许使用“来自”,然后是数据源。我想知道“积累”是否类似于收集。

最佳答案

无需使用accumulate ,只是做一些像

Item($lowestPrice : price, $id : id)
not Item(price > $lowestPrice, id < $id)

那是如果您的项目被插入到工作内存中。

关于Drools - 使用累加找到最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181752/

相关文章:

java - 使用 Drools fluent API 即时更改规则的示例

java - 为什么使用 POST 方法的 Java HttpURLConnections 会导致返回 Http 500 错误?

java - Java 格式验证数字?

java - Drools 中的正则表达式

java - NoSuchMethodError 由于 Guava jar

java - 如何让就业指导系统智能化

java - 为什么使用规则引擎而不是易于理解的一行属性?

Drools 规则编写最佳实践

java - 从 Drools 6.0.1 迁移到 Drools 6.3.0-Final 出现意外的全局 [log] 错误

java - 在 drools lhs 中调用自定义函数