Drools决策表,“不匹配的输入'>'在规则“

时间:2015-08-03 11:12:12

标签: java drools

我正在使用Drools创建一个决策表,并且遇到大于字符('>')的问题。 我在drools文档中看到你可以使用'>'和'<'但我似乎弄错了。

专栏是(我还没有足够的声望发布图片):

  • | CONDITION |
  • | | (空单元格)
  • | duration> |
  • |持续时间|
  • | 50 |
  • | 200 |

问题是架构不允许我获得完整的对象。我只能拥有RemoteObject中的一些字段。 所以我能做的就是:

Integer duration = getRemoteObjectDuration();
kSession.insert(duration);
kSession.fireAllRules();

结果是:

[6,2]: [ERR 102] Line 6:2 mismatched input '>' in rule "RuleTable_11"
[14,2]: [ERR 102] Line 14:2 mismatched input '>' in rule "RuleTable_12"
[0,0]: Parser returned a null Package

我可以创建一个包含我的字段的虚拟对象,但必须有更好的事情要做。 有没有人对此有所了解?

2 个答案:

答案 0 :(得分:2)

要匹配整数,您可以使用

之类的规则
rule findInt
when
    Integer( $iv: intValue > 42 )
then
    System.out.println( "got an Integer > 42: " + $iv );
end

,因此,根据

的电子表格列
CONDITION
Integer
intValue >
- ... -
42

当然,当你在工作内存中浮动几个Integer对象时,注定会失败,而无法确定是什么。

为了您的困境,我创建了一个阴影对象来保存远程对象的所有字段,而不是单独包装字段。

答案 1 :(得分:0)

感谢laune的评论,我终于让它工作了,但我必须创建一个只包含我需要的字段的自定义对象,并在CONDITION下面写了这个新类的名称。