【发布时间】:2021-09-30 13:40:52
【问题描述】:
我在 kiesession 中插入了大约 1000 个 A 类型的 pojo,如果在 kiesession 中 A 存在重复的 pojo,我如何在 drools 中添加规则来执行某些任务。
class A {
private int someInt;
private String someString;
}
function boolean checkDuplicate(List input) {
int a = input.size();
int b = ((List) input.stream().distinct().collect(Collectors.toList())).size();
return a!=b;
}
dialect "java"
rule "ADuplicateRule"
when
$input : List( ) from collect(A())
eval(checkDuplicate($input))
then
throw new Exception("A list has duplicate values");
end
上述方法可行,但有更好更简单的方法来实现吗?
喜欢在 kiesession 中对 pojo 字段的总和进行验证,我们可以简单地写这个
$sumSomeInt: Integer(this > 90) from accumulate(A( $SomeInt: someInt ), sum($SomeInt))
是否可以在类似的行上做一些事情来检查重复项?
【问题讨论】:
-
在您的情况下,是否可以在早期删除重复项而不处理“坏数据”?
标签: drools rule-engine