2016-07-14 21 views
0

Meine BPMN-Datei ist wie folgt: Addition.bpmnWie beende ich eine Prozessinstanz in Camunda-bpm?

I Aufgabe bin mit erhalten, so dass ich RuntimeService verwenden können, bin ich meinen Prozess in sayHello Klasse beginnen wie folgt:

public void sayHello(ProcessEngine processEngine) { 

    try { 
     System.out.println("inside postdeploy "); 
     variables.put("a", 2); 
     variables.put("b", 5); 
     variables.put("c", 0); 

ProcessInstance instance= processEngine.getRuntimeService().startProcessInstanceByKey("Process_2", variables); 


variables.put("c",processEngine.getRuntimeService().getVariable(instance.getId(), "c")); 

     Execution execution = processEngine.getRuntimeService().createExecutionQuery() 
        .processInstanceId(instance.getId()) 
        .activityId("ReceiveTask_16nulbx") 
        .singleResult(); 

     processEngine.getRuntimeService().signal(execution.getId()); 

ich meine c variable in Calculator-Klasse, die von meiner Service-Task wie folgt implementiert wird:

Das Problem ist meine Prozessinstanz wird nicht danach beendet. Meine Frage ist, wie kann ich meine Process-Instanz nach dem Abrufen meiner c-Variable beenden?

Antwort

1

Das Problem besteht darin, dass Ihr Prozessinstanzobjekt nicht aktualisiert wird, nachdem die Empfangsaufgabe abgeschlossen wurde. Sie müssen die Prozessinstanz abfragen, wenn Sie prüfen möchten, ob die Instanz beendet ist oder nicht. Verwenden Sie die folgende Anweisung zu überprüfen, ob die Instanz noch existiert:

ProcessInstance processInstance = processEngine 
    .getRuntimeService() 
    .createProcessInstanceQuery() 
    .processInstanceId(processInstanceId) 
    .singleResult(); 

Wenn die processInstance ist null dann die Instanz abgeschlossen wurde.