Properties 无法在Drools 6.4中使用严格模式解析方法

Properties 无法在Drools 6.4中使用严格模式解析方法,properties,drools,dialect,strict-mode,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

我们正在将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 ....}]
注意-用户类遵循JavaBean标准

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

KnowledgeBuilderConfiguration kConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null,
                    classLoader);
kConf.setProperty("drools.dialect.mvel.strict", "false");
            KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kConf);
但发生了相同的错误。请帮助我修复,我不确定,这与方言有关,或者需要更改DT文件


非常感谢。

检查com.svc.User类中属性模板的getter。它必须遵守公约

public{OBJECT\u TYPE}getTemplate(){
返回模板;
}


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

我遇到了相同的错误,但我的问题(我最终解决了)是我已将变量(在您的示例中为“template”)声明为静态变量。
因此get方法也是静态的(我使用了Eclipse的自动getter和setter生成)。一旦我去掉了静态修饰符,我的规则就运行得很好。

你说你构建了一个.xls文件。我猜你已经导入了这个类,我也猜你已经检查了getter。因为您提到了Drools知识库的版本,所以不推荐使用。可能有一些冲突:[link]()是的。。。我已在xls中导入该类并检查模板属性!=无效的我已经检查了drools core jar 6.4.Final,是的,类不在那里,它们正在重组一切。。。但是如果你在drools knowledge 6.4.Final api中检查一下,KnowledgeBase类就在那里了。我在pom中将两者都添加为maven依赖项。我知道他们引入了一个叫做Kie的新api。是的,它已经被弃用,但仍然受到支持。好的,你能把有错误的.xls表贴出来吗?特别是检查模板的条件。我将所有旧类更改为新的kie类。现在,我正在通过kie maven插件构建kjar。我遇到了一个编译问题,就像前面提到的一样。我在DT文件中的条件是($param)中的模板,我传递了一个值“DEMO”但我遇到了异常,如无法分析表达式模板==DEMO。问题是单值没有将“in”子句作为参数。如果我运行电子表格编译器,双引号没有在DEMO中附加值。请帮助我解决此问题。。。感谢muchIf template是String,然后尝试以下条件:“{$param}”中的template或“$param”中的this:template