0

我在 DRL 文件中定义了一些规则,这是我创建 drl 文件的第一个程序。我收到错误“无法分析表达式”。这是我的代码:

package rules

import com.sample.Applicant.appli;

rule "Is of valid age"

when

    $a : appli ( age < 18 ) // appli is my class name
                            // age is a variable in that class

then

    $a.setValid( false ); // setValid is a method of appli

end

并得到错误:

Unable to Analyse Expression age < 18:

[Error: unable to resolve method using strict-mode: com.sample.Applicant$appli.age()]

[Near : {... age < 18 ....}]

         ^
[Line: 16, Column: 4] : [Rule name='Is of valid age']
4

2 回答 2

2

确保在类appli中,age要么是公共的,要么具有公共getAge()方法。

于 2013-08-07T06:34:57.717 回答
2

即使我在Drools Workbench 6.4.0 Final中验证 DRL 文件时也遇到了类似的错误“无法分析表达式....”。我检查了数据对象、它的字段、setter 和 getter 的访问说明符。一切似乎都很好。然后我保存了我的数据对象并返回到 DRL 文件并进行了验证。突然上面的错误消失了,我看到了消息'Successfully Validated'。我的错误是虽然我在 Drools Workbench 中创建了数据对象,但我忘记通过单击“保存”按钮来保存它。

所以我建议您,如果您 100% 确定您的数据对象和 DRL 文件是正确的,请先保存这些文件,然后再次验证 DRL 文件。

于 2016-09-06T20:40:47.083 回答