我在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版中运行得非常好。
答案 0 :(得分:1)
看起来这实际上是Drools 5.5中的一个错误。最终和向前。这里有报道:https://issues.jboss.org/browse/DROOLS-141
另一位用户遇到了同样的问题并在此处记录了他的进展:http://drools.46999.n3.nabble.com/Ruleflow-not-working-with-stateless-session-in-drools-server-5-5-0-Final-td4021624.html