对数组或集合中的元素进行高效Drools评估

时间:2009-05-26 17:58:47

标签: java drools

使用Drools 3.0.6(旧的,我知道),什么是在已知的,固定的和相当大的数组或集合中找到事实的有效评估(包含的反转,即“包含在”中)。 使用OR系列的正常“等于”会导致StackOverflowError,因为数组/集合可以包含几千个条目,因为Drools二元运算符求值是递归的。

我们有一个值事实和一组要匹配的值。当前的“代码”如下所示:

$f: Fact(name="TheFact", $data)
eval(!($data.equals("1") || $data.equals("2") || $data.equals("3") ... )) 

表示大量固定值(1,2,3,...)。我正在寻找更像“(1,2,3,...)中的$ data”的东西。

1 个答案:

答案 0 :(得分:0)

有时您需要(或者更具可读性)将一些评估放入对象本身。然后,您可以将eval语句减少为像eval(!$f.isInRange(1, 200))

那样