Block
Sie verwenden einen Block (
), um Schritte zusammenzufassen, die hintereinander
ausgeführt werden und auf dieselben lokalen Daten (siehe auch: Container)
zugreifen sollen. Sie können einen Block auch verwenden, um Schritte
zusammenzufassen, für die Sie eine gemeinsame Frist oder Ausnahmebehandlung
definieren möchten oder um eine lokale Korrelation zu definieren.
Sie können für einen Block den Modus Dynamische Parallelität („Parallel For Each“) oder Dynamische Sequenz („For Each“) festlegen. Dabei wird der Block für alle Elemente eines mehrzeiligen Containerelements ausgeführt.
Sie können Blöcke hintereinander definieren oder ineinander schachteln. Ein Block kann jedoch keine bestehende Blockgrenze überlagern. Den äußersten Block eines Prozesses bildet immer der Prozess selbst.
Elemente des übergeordneten Containers sind in untergeordneten Containern sichtbar. Ein Element kann in einem untergeordneten Container gelesen und geschrieben werden, es kann jedoch nicht umdefiniert werden.
Eine Frist gibt den spätesten Ausführungszeitpunkt für den Block an. Sie können festlegen, auf welchen Zeitpunkt sich die Frist bezieht:
● Zeitpunkt der Erzeugung des Schritts oder des Prozesses
● Einen beliebigen Zeitpunkt, den Sie als Ausdruck angeben
Die Reaktion auf die Fristüberschreitung definieren Sie in einem eigenen Verarbeitungszweig. In diesem Verarbeitungszweig können Sie z. B. über einen Steuerungsschritt einen Alert für das Alert Management auslösen. Der Zweig hat Lese- und Schreibzugriff auf alle Daten innerhalb des Blocks.
Sie definieren eine Frist über das Kontextmenü des Blocks.
Zur Laufzeit prüft das System die Frist. Bei einer Fristüberschreitung wird der Verarbeitungszweig für die Frist ausgeführt. Die Schritte in den restlichen Verarbeitungszweigen des Blocks bleiben davon unberührt. Insbesondere werden diese Schritte innerhalb des Blocks nicht automatisch beendet.
An einem Block können Sie Verarbeitungszweige als Ausnahmebehandler definieren (siehe auch: Ausnahmebehandlung). Ein Ausnahmebehandler hat Lese- und Schreibzugriff auf alle Daten innerhalb des Blocks. Pro Block können Sie mehrere Ausnahmebehandler definieren.
Um einen Ausnahmebehandler-Zweig einzufügen, verwenden Sie das Kontextmenü des Blocks.
Bei einem dynamischen Modus wird der Block pro Zeile eines mehrzeiligen Containerelements ausgeführt. Beim Modus Dynamische Parallelität wird pro Zeile des mehrzeiligen Containerelements eine Instanz des Blocks erzeugt. Alle Instanzen werden parallel verarbeitet. Beim Modus Dynamische Sequenz wird der Block zuerst für die erste Zeile des mehrzeiligen Containerelements durchlaufen, dann für die zweite usw.
Den Modus Dynamische Parallelität können Sie z. B. verwenden, um eine Message parallel an mehrere Empfänger zu senden. Dazu ermitteln Sie mit einem Empfängerermittlungsschritt ein mehrzeiliges Containerelement mit der Liste der Empfänger. Dann definieren Sie das Senden der Message an diese Empfänger in einem Block mit dem Modus Dynamische Parallelität. Den Modus Dynamische Sequenz können Sie z. B. verwenden, um eine Message nacheinander an mehrere Empfänger zu senden.
Das mehrzeilige Containerelement geben Sie in der Eigenschaft Mehrzeiliges Element an. In der Eigenschaft Aktuelle Zeile geben Sie ein Containerelement an, das den Wert des mehrzeiligen Containerelements aufnimmt, für das der Block durchlaufen wird.
Sie können eine Endebedingung für den
dynamischen Modus definieren (siehe auch:
Bedingungseditor).
Diese wird geprüft, sobald der Block für eine Zeile des mehrzeiligen
Containerelements durchlaufen wurde. Der Block ist beendet, sobald nach
Abarbeitung einer Zeile des mehrzeiligen Containerelements die Endebedingung
wahr ergibt oder alle Zeile des mehrzeiligen
Containerelements abgearbeitet sind.
Weitere Informationen: Checkliste: Dynamische Parallelität richtig einsetzen
Normalerweise ist eine Korrelation für den gesamten Prozess gültig. Wurde z. B. eine Korrelation für eine bestimmte Bestellnummer aktiviert, kann diese Korrelation nicht für eine andere Bestellnummer verwendet werden. Sie können den Gültigkeitsbereich einer Korrelation jedoch beschränken, in dem Sie die Korrelation einem Block als lokale Korrelation zuordnen. Die lokale Korrelation ist dann nur innerhalb des Blocks gültig und kann außerhalb des Blocks nicht aktiviert oder verwendet werden. Eine lokale Korrelation können Sie z. B. verwenden, um in einer dynamischen Parallelität für jede zur Laufzeit erzeugte Instanz eine Korrelation mit einem eigenen eindeutigen Schlüssel (GUID) zu erzeugen und zu verwenden. Dadurch kann z. B. jede Instanz des Blocks eine unterschiedliche Bestellnummer verarbeiten.
Sie können festlegen, ob Blockanfang und Blockende jeweils Transaktionsgrenzen sind. Durch eine geeignete Definition der Transaktionsgrenzen können Sie Performance-Steigerungen erzielen.
Die Einstellung für den Blockanfang bezieht sich dabei auf den Start des Blocks und den Start eines Ausnahmbehandlers am Block. Wenn Sie also für den Blockanfang das Starten einer neuen Transaktion festlegen, wird beim Starten des Blocks und beim Starten des Ausnahmebehandlers jeweils eine eigene Transaktion gestartet.
Weitere Informationen:
Transaktionales
Verhalten eines Integrationsprozesses
...
Ein Beispiel für die Verwendung eines Blocks, inkl. Frist, Ausnahme und Ausnahmebehandler finden Sie unter Beispiel: Messages eines Interfaces sammeln und bündeln.
Ein Beispiel für eine dynamische Parallelität finden Sie unter Beispiel: Multicast - Mehrere Empfänger (mit Antwort-Message).