Interprozesskommunikation mit Ereignissen
Dieser Beispielprozess zeigt, wie ein übergeordneter Prozess über Ereignisse die Arbeit in mehreren Folgeprozessen koordiniert. Der Hauptprozess startet die Folgeprozesse und wartet anschließend darauf, dass die dort verrichteten Arbeiten abgeschlossen wurden. Die Folgeprozesse signalisieren ihren Abschluss über die Aktion Ereignis senden.
Ziel des Beispiels ist es, das Zusammenspiel mehrerer Prozesse über Ereignisse aufzuzeigen. Die im Prozess enthaltenen Formulare sind nur beispielhaft dafür, wie die jeweiligen Arbeitsschritte erledigt werden. Entscheidend ist, wie der Hauptprozess ab einem bestimmten Zeitpunkt darauf wartet, dass die Arbeiten in den Folgeprozessen abgeschlossen sind, und erst dann fortgesetzt wird.
Prozessübersicht
Der übergeordnete Prozess Ereignis Hauptprozess generiert zu Beginn eine Prozessnummer und startet anschließend zwei Folgeprozesse: die Rechnungsprozesse und den IT-Prozess. Nach einer eigenen Arbeitsphase wartet der Hauptprozess darauf, dass beide Folgeprozesse abgeschlossen wurden, und führt anschließend eine abschließende Prüfung durch.

(Screenshot kann angeklicket werden für eine größere Version)
Der Folgeprozess Ereignis IT Unterprozess führt die IT-Arbeit aus und signalisiert deren Abschluss über ein Ereignis an den Hauptprozess.

(Screenshot kann angeklicket werden für eine größere Version)
Prozessnummer als eindeutiger Schlüssel
Der Hauptprozess beginnt mit der Aktion Prozessnummer generieren. Die generierte Prozessnummer ist für jeden Prozesslauf eindeutig und dient als Schlüssel für die Ereignisse. Sie wird als Prozessvariable an die Folgeprozesse übergeben und fließt in die Namen der Ereignisse ein. Dadurch ist jedes Ereignis genau einer Kombination aus Hauptprozesslauf und Folgeprozess zugeordnet.
Wird der Hauptprozess mehrfach gestartet, wartet jeder Prozesslauf damit nur auf die Ereignisse seiner eigenen Folgeprozesse. Ein Folgeprozess setzt so keinen Prozesslauf fort, dem er nicht zugeordnet ist.
Folgeprozesse starten
Der Hauptprozess startet die Folgeprozesse mit der Aktion Folgeprozess starten. Im Beispiel werden die Rechnungsprozesse und der IT-Prozess gestartet. Als Prozessbearbeiter wird jeweils der Prozessinitiator gewählt.
Für den IT-Prozess wird über die Option Variablen übergeben die generierte Prozessnummer weitergegeben: Die Variable Hauptprozessnummer des Folgeprozesses erhält den Wert des Platzhalters Prozessnummer des Hauptprozesses.

(Screenshot kann angeklicket werden für eine größere Version)
Auf Ereignisse warten
Nachdem die Folgeprozesse gestartet wurden, arbeitet der Hauptprozess zunächst weiter. Mit der Aktion Auf Ereignis warten hält er anschließend an, bis die Folgeprozesse ihre Abschlussereignisse gesendet haben. Im Beispiel sind folgende Werte konfiguriert:
- Ereignisse:
{Prozessnummer}_Rechnungund{Prozessnummer}_IT. Der Platzhalter Prozessnummer wird dabei durch die im Hauptprozess generierte Nummer ersetzt. - Auf Ereignisse warten: Auf alle Ereignisse warten. Der Hauptprozess wird erst fortgesetzt, wenn beide Ereignisse empfangen wurden.
- Zu berücksichtigende Ereignisse: Alle (auch alte) Ereignisse. Wurde ein Ereignis bereits gesendet, bevor die Wartezeit begann, wird der Prozess sofort fortgesetzt.

(Screenshot kann angeklicket werden für eine größere Version)
Ereignis senden im Folgeprozess
Der Folgeprozess Ereignis IT Unterprozess führt in dem Formular IT Arbeit seine Aufgaben aus. Zum Abschluss sendet er mit der Aktion Ereignis senden ein Ereignis an den Hauptprozess:
- Ereignis:
{Hauptprozessnummer}_IT. Der Name setzt sich aus der vom Hauptprozess übergebenen Variablen Hauptprozessnummer und dem Suffix IT zusammen.

(Screenshot kann angeklicket werden für eine größere Version)
Sobald der Hauptprozess das Ereignis {Prozessnummer}_IT (zusätzlich zu {Prozessnummer}_Rechnung) empfangen hat, wird er fortgesetzt.
Fazit & Ausblick
Mit dem Muster aus Prozessnummer generieren, Folgeprozess starten sowie Ereignis senden und Auf Ereignis warten lassen sich mehrere Prozesse ineinander verschachteln und koordinieren. Die Formulare aus dem Beispiel sind dabei beliebig austauschbar, entscheidend ist der Informationsaustausch über Ereignisse.
Das Muster ist nicht auf Folgeprozesse beschränkt. Ebenso lassen sich technische Ereignisse koordinieren: Ein Prozess kann z. B. auf einen bestimmten Wert warten und eingehende E-Mails über die Aktion Exchange eingehende E-Mail überwachen. Sobald eine passende E-Mail vorliegt, wird ein Ereignis gesendet, in dem z. B. eine aus der E-Mail herausgelesene Nummer enthalten ist. Ein darauf wartender Prozess wird daraufhin fortgesetzt.