简短版:如何使用新的 KIE API 禁用 MVEL 严格模式?
我知道有一个配置属性“drools.dialect.mvel.strict”可以使用旧的 KnowledgeBuilder API 进行设置。但是我找不到使用新 API 完成相同操作的方法。
长版:我有一个对象方法,称为Object attribute(String name),结果可以是许多不同的类型。有时可能是列表,其他字符串或其他。现在为了使用该方法,我必须使用大量强制转换或流口水抛出异常。对于以下示例:
$entity : RootEntity( attribute('authors') != null &&
attribute('authors').size() >= 3 &&
attribute('authors')[2] == 'whatever' )
我收到这样的错误:
Unable to Analyse Expression attribute("authors").size() >= 3:
[Error: unable to resolve method using strict-mode: java.lang.Object.size()]
Unable to Analyse Expression attribute("authors")[2] == "whatever":
[Error: unknown collection type: class java.lang.Object; property=]
为了在启用严格类型的情况下使其工作,我必须输入相同的表达式:
$entity : RootEntity( attribute('authors') != null &&
((java.util.List) attribute('authors')).size() >= 3 &&
((java.util.List) attribute('authors'))[2] == 'whatever' )
可以使用严格输入选项禁用它。