我在 Tomcat 7 上运行 Drools 6.0.0.Beta2。我一直遇到一个问题,即我的所有规则在初始有效负载上执行一次,并且只有第一个规则在后续有效负载上执行,即使有效负载与第一的。有人向我建议,问题出在某个规则的条件下,但我不明白当规则在第一个有效负载上完美执行时会看到什么。这些规则位于单独的规则流中,并且有很多第二种类型的规则只是对测量参数使用不同的值。
以下是前两条规则的示例:
rule "encounter type values"
ruleflow-group "encounter-types"
when
$f: Foo()
$b: Bar() from $f.getBars()
$s: Foo.Something(type == Foo.Something.TYPE_1 || type == Foo.Something.TYPE_2 || type == Foo.Something.TYPE_3, value> 0.0) from $b.getSomethings()
then
FlyingMonkey m = new FlyingMonkey($f, $s.getDate(), $s.getType, $s.getValue());
insert(m);
end
rule "do math for type and date"
ruleflow-group "yay-math"
when
$m: FlyingMonkey(value!=null || score!=null, type=="TYPE1", age>-30, age<30)
then
Measurement fact = new Measurement($m, 1, 2, 3, 4, 5, 6);
insert(fact);
end
有谁知道为什么会发生这种情况?这是我正在使用的软件版本中的一个错误,还是我的规则中更有可能第二次莫名其妙地破坏了它们?
编辑:我使用的规则在 Drools 5.0.1 版中运行得非常好。