Altova FlowForce Server 2024 

Wenn ein Auftragsschritt fehlschlägt, wird auch der Auftrag als fehlgeschlagen betrachtet. Um einige Aufräumaktionen durchzuführen, bevor der Auftrag endgültig beendet wird (z.B. Erstellen eines Protokolls oder Senden von E-Mail-Benachrichtigungen), können Sie Schritte des Typs "Error/Success Handler-Schritt" durchführen. Mit Hilfe solcher Schritte können Sie die Ausführung eines oder mehrerer Schritte schützen (geschützte Schritte). Error/Success Handler und geschützte Schritte bilden Teil eines so genannten geschützten Blocks (siehe Struktur eines geschützten Blocks weiter unten).

 

Je nach Anforderung können Sie innerhalb eines geschützten Blocks Ausführungsschritte, Auswahlschritte, For-Each- und Verschobene Blöcke erstellen. Außerdem können innerhalb eines geschützten Blocks auch andere geschützte Blöcke verschachtelt werden.

 

Hinzufügen eines Error/Success Handlers

Um einen Error/Success Handler hinzuzufügen, erstellen Sie einen Auftrag oder öffnen Sie einen vorhandenen Auftrag und klicken Sie auf neuer Error/Success Handler-Schritt. Wählen Sie anschließen den entsprechenden Error/Success Handler-Schritt aus.

 

Struktur eines geschützten Blocks

Im Beispiel sehen Sie die Struktur eines geschützten Beispielblocks. Der unten gezeigte geschützte Block besteht aus den geschützten Schritten (Schritt A und B) und den Fehler-/Erfolgsbehandlungsschritten (Schritt C, D, E und F). Nach jeder Ausführung der geschützten Schritte (ob mit Erfolg oder einem Fehler) werden als nächstes die Handler-Blöcke ausgeführt.

 

Geschützter Block

 

Schritt A

Schritt B

 

Bei Fehler

  Schritt C

Bei Wiederholung

  Schritt D

Bei Erfolg

  Schritt E

Immer

  Schritt F

 

Geschützter Block

 

Arten von Handlern

Jeder Handler-Block hat eine bestimmte Bedingung. Wenn diese Bedingung "true" ergibt, werden die Schritte dieses Handlers ausgeführt. Es gibt folgende Arten von Error/Success Handlern:

 

Der Bei Fehler-Block wird ausgeführt, wenn einer der geschützten Schritte fehlgeschlagen ist.

Der Bei Erfolg-Block wird ausgeführt, wenn alle geschützten Schritte erfolgreich ausgeführt wurden.

Der Bei Wiederholung-Handler wird ausgeführt, wenn einer der geschützten Schritte fehlgeschlagen ist. Die geschützten Schritte werden so oft ausgeführt, wie in der Option ...Mal erneut versuchen angegeben (siehe Option "Wiederholung" weiter unten). Standardmäßig ist diese Option auf 0 gesetzt.

Der Immer-Handler wird ausgeführt, unabhängig davon, ob die geschützten Schritte erfolgreich ausgeführt wurden oder nicht.

 

Reihenfolge der Handler-Ausführung

Handler-Blöcke werden immer in der festgelegten Reihenfolge ausgeführt. Wenn z.B. ein Immer-Block, gefolgt von einem Bei Fehler-Block, wiederum gefolgt von einem weiteren Immer-Block definiert ist, werden die beiden Immer-Blöcke in der angegebenen Reihenfolge ausgeführt, sobald die geschützten Schritte fertig ausgeführt wurden. Der Bei Fehler-Block wird nur dann nach dem ersten Immer-Block ausgeführt, wenn in den geschützten Schritten ein Fehler aufgetreten ist.  

 

Wenn im selben geschützten Block oben Schritt A oder B fehlschlägt, werden die geschützten Schritte verlassen und es werden auf jeden Fall die Schritte C und F ausgeführt (weil sie Bei Fehler- bzw. Immer-Schritte sind). Schritt D wird nur ausgeführt, wenn noch Wiederholungen übrig sind (siehe Unterabschnitt unten).

 

Die Option "Wiederholung"

Es gibt Fälle, in denen ein Schritt eventuell erneut ausgeführt werden soll, wenn seine Ausführung fehlgeschlagen ist. Zu diesem Zweck gibt es in FlowForce Server die Option zur Wiederholung. Normalerweise ist diese Option auf 0 gesetzt, d.h. der geschützte Block wird nur einmal ausgeführt. Es wird nicht versucht, den Block erneut auszuführen.

 

"Bei Wiederholung"-Blöcke werden nur ausgeführt, wenn für die geschützten Schritte Wiederholungen übrig sind. Die Wiederholung wird erst gestartet, nachdem alle Handler-Blöcke erfolgreich ausgeführt wurden und nur, wenn die geschützten Schritte aufgrund eines Fehlers verlassen wurden. Wenn keine Wiederholungen übrig sind, wird der Fehler außerhalb dieses geschützten Blocks erneut ausgegeben.

 

Um einen Ausführungsschritt hinzuzufügen, der eine bestimmte Anzahl von Malen wiederholt wird, gehen Sie folgendermaßen vor:

 

1.Geben Sie im Textfeld am oberen Rand des Error/Success Handler-Schritts die Anzahl der benötigten Wiederholungen an (z.B 3 Mal) (siehe Abbildung unten).

2.Klicken Sie unterhalb des Abschnitts Ausführen mit Error/Success Handler... auf die Schaltfläche add und fügen Sie einen oder mehrere Schritte hinzu, der/die im Fall eines Fehlers erneut ausgeführt werden soll(en).

 

Im unten gezeigten Beispiel wird ein Auftrag, in dem eine Datei auf einen FTP-Server hochgeladen wird, bei Fehler 3 Mal erneut versucht. Die Anzahl der Wiederholungen der jeweiligen Auftragsinstanz wird im Log protokolliert. Wenn Sie zusätzlich dazu die Anzahl der Wiederholungen zur Laufzeit abrufen und verarbeiten möchten, rufen Sie die retry-count-Ausdrucksfunktion auf.

fs_retry_on_error_03

Timeout definieren

Sie können in einem Fehler-/Erfolgsbehandlungsschritt ein Timeout definieren, indem Sie im oberen Bereich des Error/Success-Blocks auf die Schaltfläche Timeout definieren klicken. Wenn Sie diese Schaltfläche aktivieren, werden zwei Optionen angezeigt: Timeout und Stopp erzwingen nach weiteren N Sekunden. Mit dem ersten Timeout wird ein Auftragsschritt abgebrochen, wenn er nach der angegebenen Zeit (in Sekunden) nicht erfolgreich ausgeführt werden konnte. Dieser Anweisung kann im Auftragsschritt Folge geleistet werden oder die Anweisung kann auch ignoriert werden. Nach Ablauf des ersten Timeout wird der zweite Timeout-Wert wirksam und es wird ein Stopp des Auftragsschritts erzwungen. Durch Timeouts werden die abgebrochenen Schritte zu fehlgeschlagenen Schritten. Falls Sie Bei-Fehler-, Bei-Wiederholung- oder Immer-Handler definiert haben, werden diese als nächstes ausgeführt.

 

Wiederaufnahmeschritte

In einem Wiederaufnahmeschritt kann die Ausführung nach Auftreten eines Fehlers wieder aufgenommen werden. Wiederaufnahmeschritte betreffen die Fehlerbehandlung und können nur in Abschnitten zur Behandlung von geschützten Blöcken vorkommen. Wiederaufnahmeschritte können auch innerhalb von Bedingungen, die innerhalb von Handler-Abschnitten in geschützten Blöcken verwendet werden, ausgeführt werden.

 

Funktionsweise von Wiederaufnahmeschritten

Die wichtigste Aufgabe eines Wiederaufnahmeschritts ist es, das Ergebnis des fehlgeschlagenen geschützten Schritts durch ein neu erstelltes Ergebnisobjekt zu ersetzen. Damit verhindern Sie, dass ein Auftrag abgebrochen wird, wenn innerhalb des Fehler-/Erfolgsbehandlungsschritts ein Fehler auftritt. Wenn ein Wiederaufnahmeschritt ausgeführt wurde, geschieht Folgendes:

 

1.Das Ergebnis des entsprechenden geschützten Blocks wird auf den berechneten Ausdruck gesetzt.

2.Der Wiederaufnahmeschritt verlässt danach den geschützten Block, den er behandelt.

3.Die Ausführung wird nach dem geschützten Block wiederaufgenommen. Dabei kann es sich um den nächsten Schritt nach dem Block oder das Auftragsende handeln, so als ob der geschützte Block erfolgreich gewesen wäre.

 

Nachdem der Wiederaufnahmeschritt fertig ausgeführt wurde, werden keine weiteren Handler-Blöcke des aktuellen geschützten Blocks oder auch nur Schritte innerhalb des aktuellen Handler-Blocks ausgeführt. Wenn Sie Aufräumoperationen definieren müssen, können Sie einen weiteren geschützten Block in den ersten verschachteln und z.B. Immer- oder Bei Erfolg-Handler hinzufügen.

 

Hinzufügen eines Wiederaufnahmeschritts

Um einen Wiederaufnahmeschritt hinzuzufügen, gehen Sie folgendermaßen vor:

 

1.Erstellen Sie einen Success/Error-Handler-Schritt.

2.Klicken Sie an der gewünschten Stelle auf das Plus-Symbol.

3.Wählen Sie Wiederaufnahmeschritt aus der Liste aus.

4.Daraufhin wird der Wiederaufnahmeschritt angezeigt und enthält ein Textfeld, in dem Sie eine Ausdrucksfunktion angeben müssen. Das Ergebnis des aktuellen geschützten Blocks wird auf den in diesem Feld berechneten Ausdruck gesetzt.

 

Der an den Wiederaufnahmeschritt übergebene Ausdruck muss mit dem Rückgabetyp des geschützten Blocks (d.h. dem Typ des letzten in der geschützten Sequenz ausgeführten Schritts) kompatibel sein. Die nachfolgende Liste enthält die Ausdrucksfunktionen, die Sie verwenden können:

 

make-error-result

make-success-result

merge-results

 

Wo soll ein Wiederaufnahmeschritt platziert werden?

Es gibt verschiedene Stellen, an die Wiederaufnahmeschritte in geschützten Blöcken platziert werden können. Unten finden Sie einige Beispiele dafür:

 

Beispiel 1: Sie können eine Wiederaufnahmeschritt in einen Handler-Block hineinsetzen.

Beispiel 2: Sie können den geschützten Block auch in zwei verschachtelte Blöcke aufteilen, von denen einer einen Wiederaufnahmeschritt enthält und der andere alle restlichen Immer-Handler ausführt.

 

Beispiel

In der Praxis ist es nicht notwendig, für jeden Auftrag alle Handler-Typen zu definieren. Meist werden nur Bei Fehler- und Immer-Handler definiert (Abbildung unten).

 

Im Beispielauftrag unten wird im ersten Schritt durch Aufruf der Funktion \system\shell\commandline ein Skript aus dem Verzeichnis C:\scripts ausgeführt. Die Ausführung dieses Schritts wird durch zwei Handler geschützt: Bei Fehler und Immer. Nur wenn die Ausführung des ersten Schritts fehlschlägt, sendet der Bei-Fehler-Handler eine E-Mail mit der ID der fehlgeschlagenen Auftragsinstanz in der Betreffszeile. Der Immer-Handler wird unabhängig davon, ob der erste Schritt erfolgreich war oder nicht, ausgeführt. Der Immer-Handler protokolliert durch Ausführung eines Skripts aus dem Verzeichnis C:\scripts eine Nachricht.

 

Weitere Beispiele finden Sie unter Hinzufügen von Error Handlern zu einem Auftrag.

fs_protected_block_01

 

© 2018-2024 Altova GmbH