我是Drools的新手,我正在努力让示例程序正常运行。 此示例在drools文档http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/index.html#d0e9542中给出。 这个流口水规则预计会排序整数。我只是更改了示例中给出的数字,但它们没有按预期排序。 尝试使用drools版本5.5.0,5.5.1和主6.0.0,但得到了相同的错误结果。
package com.sample; public class Example2 { public static void main(String[] args) throws Exception { Number[] numbers = new Number[] { wrap(5), wrap(6), wrap(4), wrap(1), wrap(2) }; new RuleRunner().runRules(new String[] { "Example3.drl" }, numbers); } private static Integer wrap(int i) { return new Integer(i); } }
RuleRunner类与示例中给出的相同,我认为我不应该在这里给出它,因为它会使问题变得混乱。它只是创建KnowledgeBase,有状态会话,插入上面'numbers'数组中给出的事实,然后在会话中调用fireAllRules方法。
规则“规则04”
方言“mvel”
当
$ number:Number()
不是数字(intValue< $ number.intValue)
然后
System.out.println(“找到的值为:”+ $ number.intValue());
收回($号);
结束
Loading file: Example3.drl Inserting fact: 5 Inserting fact: 6 Inserting fact: 4 Inserting fact: 1 Inserting fact: 2 Number found with value: 1 Number found with value: 4 Number found with value: 2 Number found with value: 5 Number found with value: 6
我可能做错了什么?我无法想象drools规则引擎会在这个基本级别被打破。
答案 0 :(得分:1)
这似乎是5.5.0以后引入但仍然存在的错误。
本分类代码适用于5.4.0。
而不是:
“不是数字(intValue< $ number.intValue)”
如果你使用:
“不是数字(intValue()< $ number .intValue)“
然后它起作用。
一种令人衰弱的问题,会降低评估阶段对产品的信心。