Freigeben über


Szenarien, die lang ausgeführte Transaktionen verwenden

In den folgenden Szenarien wird die Verwendung von lang ausgeführten Transaktionen beschrieben.

Szenario 1: Verwenden von Transaktionen mit langer Ausführungszeit mit Timeouts

Lang ausgeführten Bereichen kann ein Timeout zugewiesen werden. Dies ist eine logische Zeit, innerhalb der die lang ausgeführte Aufgabe abgeschlossen werden muss. Wenn der Bereich nicht innerhalb der angegebenen Zeit abgeschlossen wird, wird eine vordefinierte Systemausnahme TimeoutException ausgelöst.

Sie können lang ausgeführte Prozesse erstellen, indem Sie entweder die gesamte Orchestrierung als lang ausgeführt kennzeichnen oder alle anderen Bereiche in einem äußeren lang ausgeführten Bereich schachteln. Im ersteren Szenario wird ein vom System bereitgestellter Ausnahmehandler ausgeführt, während im letzteren Szenario dem äußeren Bereich bestimmte Ausnahmehandler zugeordnet werden. Der vom System bereitgestellte Standardausnahmehandler führt den Kompensationshandler für jeden erfolgreich abgeschlossenen geschachtelten Transaktionsbereich, sofern vorhanden, in umgekehrter Reihenfolge des Abschließens aus. Sie erzielen das gleiche Ergebnis durch Selbstkompensierung, indem Sie die Form Kompensieren im Ausnahmehandler einer lang ausgeführten Transaktion verwenden.

Die folgende Orchestrierung veranschaulicht die Zuordnung von Timeouts zu lang ausgeführten Transaktionen.

Lang ausgeführte Transaktionen mit Timeouts

Transaktionen mit langer Ausführungsdauer mit Timeouts

In einigen Fällen möchten Sie mit Legacysystemen kommunizieren, die in einer Art Batchverarbeitung ausgeführt werden. In diesem Szenario wird dargestellt, wie eine Bestellung empfangen und an das Legacysystem gesendet wird. Die Bestellung wird vom Legacysystem verarbeitet, und es wird eine Bestellbestätigung zurückgeschickt. Unter Verwendung der Bestellnummer wird vom Sendevorgang ein Korrelationssatz initialisiert. Der Empfangsvorgang folgt diesem Korrelationssatz. Der Empfangsvorgang liegt ebenfalls in einem lang ausgeführten Bereich mit einem Timeoutwert.

Die Orchestrierungsinstanz, die auf einen Empfangsvorgang wartet, wird von der Orchestrierungs-Engine in den Pausenmodus versetzt. Durch die Korrelation wird sichergestellt, dass nach dem Empfang der Nachricht dieselbe Orchestrierungsinstanz aufgerufen wird. Wenn die Bestellbestätigung nicht innerhalb des durch die Timeoutwerte angegebenen Zeitintervalls eingeht, wird eine TimeoutException ausgelöst.

Szenario 2: Verwenden von Transaktionen mit langer Ausführungszeit mit benutzerdefinierter Vergütung

Die folgenden Orchestrierungen veranschaulichen die Zuordnung und das Aufrufen benutzerdefinierter Kompensierungen, die mit einer gesamten Orchestrierung verknüpft sind. In diesem Szenario werden ein neuer Kunde sowie Bestellinformationen für diesen Kunden eingefügt. Aufgrund der Logik der Orchestrierung muss der Kundeneintrag rückgängig gemacht werden, wenn das Eintragen der Bestellung fehlschlägt. Der Kundeneintrag sollte von einem Legacysystem vorgenommen werden und wird daher in einer separaten aufrufbaren Orchestrierung veranschaulicht. Für die aufgerufene Orchestrierung ist die Benutzerdefinierte Eigenschaft für die Kompensation festgelegt, die ein separates Blatt für den Kompensationsprozess bereitstellt. Der soeben eingefügte Kunde soll von der Kompensierung gelöscht werden.

Die aufrufende Orchestrierung hat einen lang ausgeführten Bereich, um die Bestellung einzufügen. Dieser Bereich ist in einem äußeren lang ausgeführten Bereich geschachtelt. Dem äußeren Bereich ist ein Ausnahmehandler zugeordnet, um alle Ausnahmen zu erfassen. Unter Verwendung der Form Kompensieren wird die der aufgerufenen Orchestrierung zugeordnete benutzerdefinierte Ausnahme vom Handler aufgerufen, um alle Änderungen, die möglicherweise während des Aufrufs der Orchestrierung aufgetreten sind, rückgängig zu machen.

Lang ausgeführte Transaktionen mit benutzerdefinierter Kompensierung

Lang andauernde Transaktionen mit benutzerdefinierten BTS_Trans_Orch_Fig8

Aufgerufene Orchestrierung (Allgemein)

Orchestrierung (Standard)

Aufgerufene Orchestrierung (Kompensierung)

Orchestrierung (Kompensation)