我正在使用 jboss EAP 7.2 和 Red Hat Decision Central 7.5.0
我有一个这样的自定义对象
public class Model{
private String id;
private Map<String, Object> map;
// ... getters and setters
}
public class ParameterModel{
private String parameterName;
private BigDecimal maxValue;
private BigDecimal minValue;
private Object value;
// ... getters and setters
}
我创建了具有自定义“id”属性的新“模型”对象,并且“地图”属性包含 <parameterName, ParameterModel> 对。
我将它发送给决策经理和流口水的一方,我想实现 ParameterModel 属性,但我做不到。
我的规则如下。
package com.rule.test;
import com.test.Model;
import com.test.ParameterModel;
rule "drools1"
when
Model(getId().equals("1"), Integer.parseInt(((ParameterModel)getMap().get("param1")).getValue().toString())>10)
then
System.out.println("Error on " + drools.getRule().getName());
end
例外情况如下。
引起:[错误:空指针:Integer.parseInt(((ParameterModel)getMap().get("param1")).getValue().toString())] [Near : {... Integer.parseInt(( (ParameterMo ....}] 在 [com/rule/test/test.drl 中的规则“drools1”]
原因:org.mvel2.ast.TypeCast.getReducedValueAccelerated(TypeCast.java:74) 的 org.mvel2.DataConversion.convert(DataConversion.java:129) 的 java.lang.NullPointerException 在 org.mvel2.compiler.ExecutableAccessor.getValue (ExecutableAccessor.java:38) 在 org.mvel2.compiler.ExecutableAccessor 的 org.mvel2.ast.Union.getReducedValueAccelerated(Union.java:44) 的 org.mvel2.ast.Substatement.getReducedValueAccelerated(Substatement.java:44)。 getValue(ExecutableAccessor.java:38) at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:970) at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:396)
谢谢你们。