Beispiel: Multicast - Mehrere Empfänger (mit
Response-Message)
Sie können eine Message an mehrere Empfänger senden und auf eine Response-Message der jeweiligen Empfänger warten. Das Senden an mehrere Empfänger mit Warten auf eine Response-Message wird auch als Multicast bezeichnet.
Die Empfänger werden zur Laufzeit über die im Integration Directory konfigurierte Empfängerermittlung ermittelt. Die Anzahl der Empfänger muss also zur Design-Zeit noch nicht bekannt sein.
Sie können einen Multicast auf unterschiedliche Arten definieren. Die nachfolgende Tabelle zeigt verschiedene Möglichkeiten. Die Beispiele finden Sie im Integration Repository unter SAP Basis → SAP Basis 6.40 im Namensraum http://sap.com/xi/XI/System/Patterns.
Multicast |
Beschreibung |
Beispiel |
Nacheinander senden (Block im Modus Dynamische Sequenz) |
Mehrere Message werden nacheinander an die einzelnen Empfänger gesendet. |
BpmPatternMulticastSequential |
Gleichzeitig senden (Block im Modus Dynamische Parallelität) |
Mehrere Messages werden gleichzeitig an die einzelnen Empfänger gesendet. |
BpmPatternMulticastParallel |
Die Beispielprozesse werden durch den Empfang einer Message im Containerelement Message im ersten Empfangsschritt gestartet. Ein anschließender Empfängerermittlungsschritt ruft die im Integration Directory konfigurierte Empfängerermittlung auf und liefert die Empfängerliste im mehrzeiligen Containerelement Receivers. Die Message wird in einem dynamischen Block entweder nacheinander oder parallel an die Empfänger gesendet.
Als mehrzeiliges Element für die dynamische Verarbeitung dient das Containerelement Receivers definiert. Für die aktuelle Zeile ist das Containerelement Receiver definiert. Dieses liefert die einzelnen Empfänger, für die der Block ausgeführt wird.
Jeder Empfänger sendet eine Response-Message, die im Containerelement Response empfangen wird. Die gesendete Message und die Response-Message sind über eine Korrelation verknüpft.
Die gesendete Message könnte z. B. ein Bestellauftrag sein, die Response-Message die Bestellantwort. Bestellauftrag und Bestellantwort können z. B. über eine Bestellnummer korreliert sein.
Eins der abstrakten Interfaces wird Inbound verwendet, das andere Outbound (siehe auch: Prozesssignatur).
Wenn es nicht erforderlich ist, dass die Message gleichzeitig an die verschiedenen Empfänger gesendet wird, sondern lediglich, dass sie an die verschiedenen Empfänger gesendet wird, definieren Sie den Block als dynamische Sequenz. Innerhalb des Blocks sendet ein Sendeschritt die Message an den ersten Empfänger der Empfängerliste und erzeugt die Korrelation Correlation. Ein Empfangsschritt verwendet Correlation und empfängt die Response-Message des ersten Empfängers. Ist dieser Empfangsschritt beendet, wird die Message an den nächsten Empfänger der Empfängerliste gesendet. Auf diese Weise wird die gesamte Empfängerliste abgearbeitet.
Damit für jeden Empfänger eine eigene Instanz der Korrelation verarbeitet werden kann, ist Correlation als lokale Korrelation definiert.
Folgende Grafik zeigt die Definition des Prozesses:

Der Block ist als dynamische Parallelität definiert. Pro Empfänger der Empfängerliste wird eine Blockinstanz erzeugt, in der folgende Schritte ausgeführt werden:
· Ein Sendeschritt sendet eine Message an den Empfänger und aktiviert die Korrelation Correlation. Damit für jede Instanz des Blocks eine eigene Instanz der Korrelation verarbeitet kann, ist Correlation als lokale Korrelation definiert.
· Ein Empfangsschritt verwendet diese Korrelation und empfängt die Response-Message des Empfängers.
Der Block ist beendet, sobald alle parallel erzeugten Blockinstanzen beendet sind, also die Response-Message von allen Empfängern der Empfängerliste empfangen wurde.

Beachten Sie, dass eine dynamische Parallelität keine Performance-Vorteile bringt.
Siehe auch: Checkliste: Dynamische Parallelität richtig einsetzen
Folgende Grafik zeigt die Definition des Prozesses:
