2016-04-05 16 views
0

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, sind
Public class Test{ 
    UUID id; 

    public UUID getId(){ 
     return id; 
    } 

    public void setId(UUID id){ 
     this.id = id; 
    } 

} 

Antwort

0

Sie könnten einen MVEL Ausdruck als die versuchen, mit Setter-Wert. Der Code in ModifyCommand sieht so aus, als wäre er implementiert. Also, vielleicht:

6 setters.add(new SetterImpl("id", "UUID.randomUUID()"); 

Dies wird im Kontext der Sitzung ausgewertet. Möglicherweise müssen Sie UUID im DRL importieren oder den vollständigen Klassennamen verwenden.

(Ich habe nie irgendetwas davon probiert, habe die Kommandoschnittstelle seit Jahren nicht mehr verwendet. Ich habe nur den Quellcode lesen.)

+0

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