Drools 6.5 错误编译规则引用地图
Drools 6.5 Error Compiling Rule Referencing A Map
我正在尝试编译以下规则并遇到错误 The method concatenateValues(String, String, String) in the type StringHelper is not applicable for the arguments (Object, Object, Object)
。我的问题是为什么 $map.get("KEY_B"),.. 不是 return 字符串值?
rule "RULE01"
no-loop true
when
$attribute:String()
$map : Map(this["KEY_A"] == "VALUE_A")
then
ruleResponse.put("ruleName",drools.getRule().getName());
$attribute = StringHelper.concatenateValues($map.get("KEY_B"),$map.get("KEY_C"), $map.get("KEY_D"));
ruleResponse.put("result",$attribute);
end
public static String concatenateValues(Object value1, Object value2, Object value3){
StringBuilder sb = new StringBuilder(value1 == null ? "" : value1.toString())
.append(value2 == null ? "" : value2.toString())
.append(value3 == null ? "" : value3.toString());
return sb.toString();
}
Drools 不支持泛型类型。 get 的结果类型为 Object
.
您可以修复您的 StringHelper.concatenateValues
以像这样运行:
StringHelper.concatenateValues( Object o1, Object o2, Object o3 ){
return concatenateValues( o1.toString, o2.toString, o3.toString );
}
我正在尝试编译以下规则并遇到错误 The method concatenateValues(String, String, String) in the type StringHelper is not applicable for the arguments (Object, Object, Object)
。我的问题是为什么 $map.get("KEY_B"),.. 不是 return 字符串值?
rule "RULE01"
no-loop true
when
$attribute:String()
$map : Map(this["KEY_A"] == "VALUE_A")
then
ruleResponse.put("ruleName",drools.getRule().getName());
$attribute = StringHelper.concatenateValues($map.get("KEY_B"),$map.get("KEY_C"), $map.get("KEY_D"));
ruleResponse.put("result",$attribute);
end
public static String concatenateValues(Object value1, Object value2, Object value3){
StringBuilder sb = new StringBuilder(value1 == null ? "" : value1.toString())
.append(value2 == null ? "" : value2.toString())
.append(value3 == null ? "" : value3.toString());
return sb.toString();
}
Drools 不支持泛型类型。 get 的结果类型为 Object
.
您可以修复您的 StringHelper.concatenateValues
以像这样运行:
StringHelper.concatenateValues( Object o1, Object o2, Object o3 ){
return concatenateValues( o1.toString, o2.toString, o3.toString );
}