Entsprechend dem Dokument von Camunda (https://docs.camunda.org/manual/latest/user-guide/process-applications/process-application-event-listeners/) kann ein "globaler" Event-Handler (ExecutionListener oder TaskListener) zum ProcessApplication
hinzugefügt werden.
Nichtsdestotrotz konnte ich keinen Weg finden, einen ähnlichen ("globalen") Ereignishandler zur Laufzeit hinzuzufügen. Diese Funktion war in Activiti unter Verwendung der Methode addEventListener
des Motors RuntimeService
(https://www.activiti.org/javadocs/org/activiti/engine/RuntimeService.html#addEventListener-org.activiti.engine.delegate.event.ActivitiEventListener-) vorhanden, ist aber in Camundas RuntimeService
nicht mehr vorhanden.
Wie könnte ich einen "globalen" Event-Handler zur Laufzeit hinzufügen?
Hinweis: ProcessApplication
, zu dem die Ereignishandler hinzugefügt werden, kann nicht geändert werden, da ich die Handler aus einer anderen Bibliothek hinzufügen möchte.
Vielen Dank an alle,Hinzufügen eines Ereignishandlers (ExecutionListener oder TaskListener) zur Laufzeit in Camunda
Antwort
Die Gemeinde Erweiterung camunda-bpm-reactor Sie einen EventBus registrieren kann, die Ereignisse jedes Mal, wenn ein Zuhörer würde ausgelöst propgates. Sie können dann Listener für diese Ereignisse registrieren. Daher sind bpmn und Listener-Code zur Laufzeit gekoppelt.
@CamundaSelector(type = "userTask", event = TaskListener.EVENTNAME_CREATE)
public class TaskCreateListener implements TaskListener {
public TaskCreateListener(EventBus eventBus) {
eventBus.register(this);
}
@Override
public void notify(DelegateTask delegateTask) {
...
}
}
Ich denke, die Activiti Methode addEventListener
hinzugefügt wurde nach Camunda Activiti gegabelt, das ist, warum die Methode auf Camunda des RuntimeService nicht verfügbar ist.
Wie in der Dokumentation erwähnt, könnten Sie eine Prozessanwendung definieren, die den globalen Listener für Ausführung/Aufgabe zurückgibt. Um eine Prozessanwendung zur Laufzeit zu definieren, können Sie die Methode EmbeddedProcessApplication
und ManagementService#registerProcessApplication
verwenden.
Siehe folgendes Beispiel:
EmbeddedProcessApplication processApplication = new EmbeddedProcessApplication() {
public ExecutionListener getExecutionListener() {
return new ExecutionListener() {
public void notify(DelegateExecution execution) throws Exception {
// do your stuff
}
};
}
};
// register app so that it is notified about events
managementService.registerProcessApplication(deploymentId, processApplication.getReference());
Aber wie mache ich, wenn die Prozessanwendung bereits definiert und initialisiert ist? Kann ich die processApplication ändern, um die Handler hinzuzufügen? Ich möchte die Handler aus einer Bibliothek zu einer bestehenden App hinzufügen ... –
- 1. Unterschied zwischen ExecutionListener und TaskListener
- 2. Camunda Executionlistener Implementierung mit Timestamp
- 3. Hinzufügen eines Ereignishandlers zum ausgewählten Bereich
- 4. Hinzufügen eines Ereignishandlers zu jqGrid nach Instanziierung
- 5. Hinzufügen eines Ereignishandlers zu einer wiederkehrenden DropDownList
- 6. Animation zur Laufzeit hinzufügen
- 7. QRadioButtons zur Laufzeit hinzufügen
- 8. Hinzufügen von Steuerelementen zur Laufzeit
- 9. Java-Annotationen zur Laufzeit hinzufügen
- 10. Zeile zur Laufzeit zur Tabelle hinzufügen
- 11. Erweitern oder Hinzufügen neuer Klassen zur Laufzeit in Java
- 12. Syntax für das Hinzufügen eines Ereignishandlers in VB.NET
- 13. Größe eines Objekts zur Laufzeit
- 14. Generische Constraints zur Laufzeit hinzufügen?
- 15. Hinzufügen von Funktionen in GDB zur Laufzeit
- 16. Hinzufügen eines berechneten Felds zu einer Abfrage zur Laufzeit
- 17. Ausgabe eines Prozesses zur Laufzeit
- 18. java.lang.ClassCastException zur Laufzeit oder Compiler-
- 19. Endgültigen Modifikator zur Laufzeit in Java hinzufügen
- 20. hinzufügen Textview zur Laufzeit in Adapter
- 21. Rendering eines Bildes zur Laufzeit in WPF
- 22. Erstellen eines Ereignishandlers wie socket.io
- 23. Wie ClipArt zur Laufzeit auf Knopfdruck hinzufügen
- 24. Hinzufügen von WCF-Nachrichteninspektoren zur Laufzeit
- 25. lineingen uberjar - externes jar zur Laufzeit hinzufügen
- 26. Definieren der Genauigkeit/Größe eines Double oder Float zur Laufzeit
- 27. Castle.DynamicProxy2 und Hinzufügen einer Eigenschaft zur Laufzeit
- 28. Hinzufügen von cocos2d-Menüelementen zur Laufzeit
- 29. ASP.NET DynamicData - Tabelle zur Laufzeit hinzufügen?
- 30. Programmgesteuertes Andocken eines Benutzersteuerelements zur Laufzeit
Großartig! Genau das, was ich brauchte –