流口水决策表,"mismatched input '>' in rule "



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

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

  • | |条件
  • | |(空单元格)
  • |时间> |
  • | |时间
  • 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

我可以创建一个包含我的字段的虚拟对象,但肯定有更好的事情要做。有人对此有什么想法吗?

要匹配整数,可以使用如下规则

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

,因此,一个电子表格列根据

CONDITION
Integer
intValue >
- ... -
42

这当然是注定要失败的,当你有几个整数对象在工作内存中浮动,不能识别什么是什么。

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

多亏了laune的注释,我终于使它工作了,但是我必须创建一个只包含我需要的字段的自定义对象,并且我在CONDITION下面写了这个新类的名称。