Was Sie hier verwenden müssen, ist ein "BPMN Parse Listener".
https://github.com/camunda/camunda-bpm-platform/blob/master/engine/src/main/java/org/camunda/bpm/engine/impl/bpmn/parser/BpmnParseListener.java
Camunda liefert ein schönes Beispiel dafür, wie ein Parse Zuhörer Setup hier:
https://github.com/camunda/camunda-bpm-examples/tree/master/process-engine-plugin/bpmn-parse-listener
Die ursprüngliche Absicht von Parse Handlers wurde automatisch Aufgabe oder die Ausführung Zuhörer zum Prozessmodell hinzufügen . Warum tust du das? Ein Beispiel ist, wenn Sie automatisch möchten, dass alle Benutzer eine E-Mail-Benachrichtigung erhalten, wenn ihnen eine Aufgabe zugewiesen wird (ein wirklich häufiger Anwendungsfall). Das Problem ist, dass die Modellierung dieses Prozesses das Prozessdiagramm durcheinander bringt. Also ... verwenden wir einen ParseListener, um das Verhalten automatisch zu injizieren.
Nun, wie hilft das Ihrem Anwendungsfall?
Die Antwort ist einfach. Sie erhalten Zugriff auf den Modellbereitstellungsvorgang. Jedes Mal, wenn ein neues Modell bereitgestellt wird, wird das BPMN "analysiert" und alle registrierten ParseListeners werden ausgelöst.
In Ihrem Fall würden Sie in die "parseProcess()" -Methode binden und Ihren benutzerdefinierten Code ausführen.
Ich würde empfehlen, Sie einen Service-Aufruf verwenden und die benutzerdefinierte Logik externalisieren, so dass der Aufruf an die Logik und die Ausführung der Logik abstrahiert werden, aber das liegt an Ihnen.
Während ein ungewöhnlicher Anwendungsfall, ist dies eigentlich ein sehr netter Fall für BpmnParseListeners.
Hoffe, das hilft. Greg
Das funktioniert für mich. Vielen Dank! Ich habe die Klasse 'org.camunda.bpm.engine.impl.bpmn.parser.AbstractBpmnParseListener' verwendet, die eine leere Implementierung der Schnittstelle darstellt. – Fabi755