无法在Drools 6.4中使用strict-mode解决方法

时间:2016-09-02 13:44:25

标签: properties drools dialect strict-mode

我们正在将drools版本从5.x迁移到6.4并使用了我们之前使用的所有类和方法,除了编译问题,例如移动到新包等。

当我们在maven中构建DT文件(xls)时遇到了以下问题。

[ERROR] ## Errors [Unable to Analyse Expression template != null:
[Error: unable to resolve method using strict-mode: com.svc.User.template()]
[Near : {... template != null ....}]

注 - 用户类遵循Java Bean标准。

我也尝试禁用maven方言,如下所示

KnowledgeBuilderConfiguration kConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null,
                    classLoader);
kConf.setProperty("drools.dialect.mvel.strict", "false");
            KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kConf);

但是发生了同样的错误。请帮我解决,我不确定,这与方言或需要更改的DT文件有关。

非常感谢。

2 个答案:

答案 0 :(得分:1)

检查类com.svc.User中的getters属性模板。它必须遵循惯例

public {OBJECT_TYPE} getTemplate(){ return template; }

这种类型的错误通常意味着它找不到具有此名称的方法(在本例中为template()),这通常意味着attibute的getter存在一些问题。

答案 1 :(得分:0)

我遇到了同样的错误,但是我的问题(最终解决了)是我将变量(在您的情况下为“模板”)声明为静态变量。 因此,get方法也是静态的(我使用了Eclipse的自动getter和setter生成)。一旦摆脱了static修饰符,我的规则就可以正常工作。