2016-11-28 5 views
0

Ich arbeite an einem einfachen activiti Prozess und ich muss irgendwie überprüfen, ob der aktuelle Prozess bereits läuft oder nicht. Meine Idee war, einen solchen Code zu verwenden:Wie bekomme ich eine Liste der aktiven Prozesse in activiti?

activitiInitEngineBean.getRuntimeService() 
           .createExecutionQuery() 
           .processDefinitionKey(BPConstants.PROCESS_ID_D1_ASSEMBLY_PROCESS) 
           .count() > 1; 

So bekomme ich nur runtimeService innerhalb einer Java-Methode, die von Activiti BPConstants.PROCESS_ID_D1_ASSEMBLY_PROCESS Prozess ausgeführt wird, und fügen Sie Filter mit definitionKey (id des Prozesses) und Zählung überprüfen. Ich fand, dass .createExecutionQuery() immer leere Liste zurückgibt. Zum Beispiel wird dieser Code auch leere Liste zurück:

activitiInitEngineBean.getRuntimeService() 
           .createExecutionQuery() 
           .list() 

Es ist nicht zu erwarten, weil ich es in einem Prozess nennen (so soll es mindestens 1 Ausführung zurück). Was sollte ich konfigurieren, um mit runtimeService zu arbeiten?

Antwort

0

Standardmäßig speichert activiti nichts zu ru Tabellen, wenn mit < serviceTask> tag arbeitet. Lösung war Asynchron-Attribut hinzufügen:

<serviceTask activiti:async="true" 
1

Ihr Update nicht auf den db gespeichert wird, bis Wartezustand erreicht ist (siehe Transactions and Concurrency). Wenn Sie möchten, dass Ihre Prozessinstanz von der ablaufenden Abfrageprozessinstanz den ersten Wartezustand erreichen muss. Tatsächlich müssen Sie keine Abfrage erstellen, um die Ausführung zu erhalten, da die Ausführung bereits vorhanden ist, z. script task variables oder als Parameter der Schnittstellenmethode.

+0

Können Sie ein Beispiel geben, wie kann ich eine Menge laufender Prozesse anhand der Prozess-ID finden? –

Verwandte Themen