2016-11-21 1 views
1

Ich muss die Anzahl der zugewiesenen und nicht zugewiesenen UserTasks einer ProcessInstance innerhalb der Camunda BPM DelegateListeners und TaskListeners Benachrichtigung Methoden abrufen.Abrufen der Anzahl der zugewiesenen und nicht zugewiesenen UserTasks in Camunda Listeners

Es ist kein Problem, die Werte von einer Task-Abfrage abzurufen, aber das schließt nur den Transaktionsbereich ein. Gibt es eine Möglichkeit, diese Werte auch innerhalb der Listener-Notify-Methode abzurufen - also auch für den zwischengespeicherten Bereich. Ich habe bereits versucht, die Task-Abfrage mit dem zwischengespeicherten Bereich zu kombinieren (z. B. durch Inkrementieren des assignedTaskCount auf "Zuweisungs" -Ereignisse von TaskListener), aber es ist schwierig, die Transaktion und den zwischengespeicherten Bereich synchron zu bekommen.

Vielleicht gibt es eine mögliche Lösung über die ActivityInstance s des Prozesses (wie getan here aus anderen Gründen) - aber ich konnte nicht herausfinden, ob und wie. Wäre sehr hilfreich für mich zu wissen.

Momentan verwende ich Prozessvariablen, um Gruppen von zugewiesenen Aufgaben und nicht zugewiesenen Aufgaben zu speichern, die ich bei Prozessereignissen aktualisiere - aber ich würde es lieber vermeiden.

PS: Ich benutzen den Transaktionsbereich Begriff für den engagierten Camunda Zustand und der gecached Umfang Begriff für den Staat zwischen zwei Camunda verpflichtet. Nicht sicher, ob das die richtige Terminologie ist - aber ich denke, ich habe es irgendwo gelesen.

+0

Nicht sicher, welche Klasse Sie beziehen, können Sie immer BPMPlatform.getProcessEngine() aufrufen, um die Prozess-Engine zu erhalten und Abfragen ausführen – webjockey

+0

@webjockey Ja habe ich entweder 'DelegateTask 'oder' DelegateExecution' Instanzen verfügbar. Aber wie gesagt, eine Abfrage liefert nicht die vollständigen Antworten, da das Ergebnis nicht den "Zustand" nach dem letzten Camunda-Commit enthält (was ich als _cached_-Zustand bezeichne). – FrVaBe

+0

Verwenden Sie asyncBefore bei Ihrer Dienstaufgabe, die Ihren Delegaten aufruft, um die Transaktion zu bestätigen. Die Service-Task wird mit Hilfe der asynchronen Fortsetzung ausgeführt. Siehe die Dokumentation https://docs.camunda.org/manual/7.5/user-guide/process-engine/transactions-in-processes/#asynchronous-continuations – Zelldon

Antwort

1

Camunda führt Batch-Aktualisierungen zwischen Transaktionsgrenzen durch; es kann sogar entscheiden, Commits gegen Ende des Prozesses zu aktualisieren. Es gibt eine Eigenschaft für die Aktivität async nach/vorher; versuchen Sie diese und sehen, ob die Transaktion in Kürze bestätigt wird

+0

Danke. Ich würde das Transaktionsverhalten lieber nicht ändern, nur um mein Ziel zu erreichen. Aber unter anderen Umständen könnte es eine Lösung sein. Daher +1. – FrVaBe

Verwandte Themen