2016-07-12 19 views
0

Beim Lesen (https://docs.camunda.org/manual/7.5/user-guide/process-engine/variables/) bin ich nicht sicher, wie Sie eine Variable abrufen?Wie kann man die Prozessvariable in Camunda-bpm abrufen?

Im Moment kämpfe ich, um herauszufinden, wie man auf vorher eingestellte Prozessvariablen zugreifen kann. Was ich versuchte, ist:

Ich habe einen einfachen BPMN-Prozess, in dem ich Ereignis, 1 Service-Aufgabe und Ende-Ereignis starte, ich beginne meinen Prozess durch die Übergabe von 2 Variablen (a & b) und meine Service-Aufgabe implementiert folgende Java-Klasse:

public class Addition implements JavaDelegate { 

    public void execute(DelegateExecution exe) throws Exception { 

     System.out.println("Inside calculator again"); 

     Integer x = (Integer) exe.getVariable("a"); 
     Integer y = (Integer) exe.getVariable("b"); 
     int add = x+y; 
     System.out.println("Addition of two number is"+add); 
     exe.setVariable("add",add); 
} 

ich meinen Prozess am Start wie folgt:

public void sayHello(ProcessEngine processEngine) 
{ 
    Map<String,Object> variables = new HashMap<String, Object>(); 
    variables.put("a", 3); 
    variables.put("b", 5); 
    ProcessInstance instance= processEngine.getRuntimeService().startProcessInstanceByKey("Process_3", variables); 
} 

ich möchte add Größe (in Zusatz-Klasse) für den Zugriff auf in sayHello Klasse? Da Prozess abgeschlossen ist, kann ich RuntimeService nicht verwenden, also habe ich versucht, Verlaufsdienst zu verwenden, konnte jedoch keine Lösung finden.

Gibt es eine Java-API, die ich verwenden kann oder gibt es eine andere Möglichkeit?

Antwort

1

Wenn Sie alle historischen Variableninstanzen abrufen möchten, verwenden Sie die list-Methode in HistoricVariableInstanceQuery.

Für Beispiel

List<HistoricVariableInstance> variables = processEngine.getHistoryService().createHistoricVariableInstanceQuery.list(); 

Wenn Sie bestimmte Variablen mit dem angegebenen Namen erhalten möchten, können Sie die Methode variableName(String)

verwenden, zB:

List<HistoricVariableInstance> variables = processEngine.getHistoryService().createHistoricVariableInstanceQuery().variableName("myVar").list(); 

Um die Variablen eines zu bekommen spezifische Prozessinstanz verwenden Sie die Methode processInstanceId

Beispiel:

List<HistoricVariableInstance> variables = processEngine.getHistoryService().createHistoricVariableInstanceQuery().processInstanceId(processInstance.getId()).variableName("myVar").list(); 

Weitere Informationen finden Sie in der Dokumentation des HistoryService und HistoricVariableInstanceQuery