Ich beziehe mich auf den folgenden Code aus der Drools-Dokumentation, um die Fakten in Kie-Server zu ändern.Problem mit dem Ändern von Fakten in kie-Server
1 BatchExecutionCommand command = new BatchExecutionCommand();
2 command.setLookup("ksession1");
3 ModifyCommand modifyCommand = new ModifyCommand();
4 modifyCommand.setFactHandleFromString("123:234:345:456:567");
5 List<Setter> setters = new ArrayList<Setter>();
6 setters.add(new SetterImpl("age", "30"));
7 modifyCommand.setSetters(setters);
8 command.getCommands().add(modifyCommand);
In Zeile 6 möchte ich ein Attribut für ein Objekt anstelle von Zeichenfolge festlegen. Zum Beispiel
6 setters.add(new SetterImpl("id", UUID.randomUUID());
jedoch SetterImpl (String accessor, String-Wert) API akzeptiert nur String-Parameter.
Haben wir irgendeine andere Implementierung von SetterImpl, mit der ich Objekte anstelle von String an Kie-Server senden kann?
Der Grund, warum ich möchte ein Objekt senden ist, dass das Java-Modell in einem Container enthält Attribute, die,
zum Beispiel vom Typ nicht-primitive, sindPublic class Test{
UUID id;
public UUID getId(){
return id;
}
public void setId(UUID id){
this.id = id;
}
}
Laune, Ihr Vorschlag funktioniert nicht! Das Problem ist getMvelExpr() -Funktion innerhalb der ModifyCommand-Klasse der Drools-Core-Engine konvertiert immer den Parameter in String. Für Ihren Vorschlag entfernt die Engine einfach die Anführungszeichen und fügt den Wert mit der Schlüsselzeichenfolge an. – APatel