2016-03-25 4 views
3

ProblemWie benutzerdefinierte Variablen in einer Activiti Aufgabe

ich mehrere Activiti Aufgabentypen verwenden müssen, sind die Basistypen ServiceTask und UserTask.

Einige Typen ServiceTask sind Java-Implementierungen, die jeweils unterschiedlich sind. Dann gibt es noch andere.

Ich möchte sie in meinem Code unterscheiden.

Frage

Ist es möglich, einige benutzerdefinierte Attribute/Eigenschaften in den Aufgaben zu speichern, und wenn ja, wie?

Beispiel: A ServiceTask die einfache Protokollierung Funktionalität implementiert sollte eine Eigenschaft „TYPE“ mit dem Wert „logging“, die ich dann später abfragen.

Ich versuchte FieldExtension verwenden, aber wenn ich den Workflow ausführen, wirft Activiti den Fehler:

org.activiti.engine.ActivitiIllegalArgumentException: Field definition uses unexisting field 'TYPE' 

Das Gleiche gilt für CustomProperty passiert.

Natürlich könnte ich das lösen, indem ich das Feld in der Java-Klasse deklariere, aber ich brauche eine Lösung, die auch für Nicht-Java-Service-Aufgaben und für Benutzeraufgaben funktioniert. Oder besser noch wenn möglich für alle Flow-Elemente.

Vielen Dank!

Antwort

2

können Sie definieren Felder in XML/Designer:

<serviceTask id="javaService" 
    name="Java service invocation" 
    activiti:class="org.activiti.examples.bpmn.servicetask.ToUppercase"> 
    <extensionElements> 
     <activiti:field name="text" stringValue="Hello World" /> 
    </extensionElements> 
</serviceTask> 

Wenn Sie das Feld in Java-Code zugreifen möchten Sie es so tun können:

public class ToUppercase implements JavaDelegate { 
    Expression text; 

    public void execute(DelegateExecution execution) throws Exception { 
    String value = (String) text.getValue(execution); 
    value = value.toUpperCase(); 
    execution.setVariable("upperedText", value); 
    } 

} 

Wenn Sie Variablen zugreifen möchten In UserTask müssen Sie TaskListener anstelle von JavaDelegate implementieren.

+0

Vielen Dank, aber wie ich in der Frage geschrieben habe, weiß ich bereits darüber und würde eine Lösung benötigen, die auch für andere Flow-Elemente ist. – Roland