Drools规则完全运行一次然后只运行部分

时间:2013-05-16 18:20:21

标签: tomcat7 drools

我在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版中运行得非常好。

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