gpt4 book ai didi

java - Drools 规则过滤数字属性低于列表总数百分比的元素

转载 作者:行者123 更新时间:2023-11-30 11:56:10 34 4
gpt4 key购买 nike

我刚开始在一个小项目上使用 Drools,现在我需要编写一个有点复杂的规则,我真的不知道什么是最好的方法。

我将此规则应用于相同类型的对象列表(此类有一个名为 numberOfExecutions 的字段)。对于列表中的每个元素,我需要选择 numberOfExecutions 超过 total numberOfExecutions5%(numberOfExecutions 的总和列表中的所有元素)。

到目前为止,我想不出在 drools 中实现它的好方法,有人有什么建议吗?

编辑 1:到目前为止,我能想到的最好办法是在应用规则之前预先计算 numberOfExecutions 的总和,并以某种方式使该值可用于 drools 规则。

最佳答案

解决方案取决于您修改或创建新对象类的能力。在您的情况下,我会这样做:

rule "Rule 1"
when
$m : MyObject(counted == false)
$c : Calculator
then
modify($m) { setCounted(true); }
$c.count($m);
end

rule "Rule 2"
when
not MyObject(counted == false)
$m : MyObject(numberOfExecutions > ($c.totalExecutions * 0.05))
$c : Calculator
then
$m.markBiggerThan5();
end

我引入了新的 Calculator 类,它计算未计数的对象(规则 1)。如您所见,规则 2(您要求的规则)仅在所有对象都标记为已计数且总计存储在 Calculator 中时才会触发。

关于java - Drools 规则过滤数字属性低于列表总数百分比的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4648975/

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