2017-08-23 1 views
0

Ich versuche, die folgende Regel zu kompilieren und einen Fehler The method concatenateValues(String, String, String) in the type StringHelper is not applicable for the arguments (Object, Object, Object) erhalten. Meine Frage ist, warum $ map.get ("KEY_B"), .. keinen String-Wert zurückgibt?Drools 6.5 Fehler beim Kompilieren der Regel auf eine Karte

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(); 
    } 

Antwort

1

Drools kennt keine generischen Typen. Die Ergebnisse von get haben den Typ Object.

Sie könnten Ihre StringHelper.concatenateValues beheben, so zu arbeiten:

StringHelper.concatenateValues(Object o1, Object o2, Object o3){ 
    return concatenateValues(o1.toString, o2.toString, o3.toString); 
} 
+0

Danke laune, ich habe meine Update veröffentlicht, um 'oben StringHelper.concatenateValues' – Orby

Verwandte Themen