【发布时间】:2021-09-30 17:35:07
【问题描述】:
我有一个用例,假设我在 A 类型的 kiesession 中有 100,000 个 pojo,我想对其应用一些规则,其中两个是 -
- 检查是否存在类型 A 的重复值。
- A.someInt 的总和等于给定值。
class A {
private int someInt;
private String someString;
}
对于这两个规则,我应该像这样在流口水中为它们创建单独的规则
-
$sumSomeInt: Integer(this > 90) from accumulate(A( $SomeInt: someInt ), sum($SomeInt))
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
或者在java中使用单个循环来应用它并做这两个事情我想知道的是在100k记录上应用这两种方法会给我们带来很大的性能差异
只是提醒一下,我还有其他规则,所以我必须使用 drools 我不想在 java 中应用一些验证,在 drools 中应用一些验证,除非有显着的性能提升
【问题讨论】:
标签: drools rule-engine