Freigeben über


Die Orchestrierung 'ExceptionHandler'

Die Lösung für die Geschäftsprozessverwaltung verwendet zwei Arten von Ausnahmen: Systemausnahmen und Anwendungsausnahmen. Systemausnahmen umfassen Ereignisse wie Ressourcenfehler, z. B. eine fehlerhafte Netzwerkverbindung. Es besteht die Möglichkeit, dass sich diese Art von Problem nach einer gewissen Zeit selbst erledigt, sodass die Lösung alle Vorgänge erneut versucht, die Systemausnahmen erzeugen. Anwendungsausnahmen werden von Ereignissen erzeugt, die sich weniger wahrscheinlich von selbst beheben, z. B. logische Fehler oder eine Form von Inkonsistenz. Die Lösung verwendet die ExceptionHandlerOrch-Orchestrierung , um System- und Anwendungsfehler zu verarbeiten.

Die Auftragsverarbeitungsphasen (CableOrder1, CableOrder2) und die satellitengestützten Orchestrierungen (Activate, Analyze, Cancel, Change, Complete, Validate) verwenden exceptionHandlerOrch.

Hinweis

Möglicherweise möchten Sie diesen Abschnitt lesen, in dem die ExceptionHandlerOrch-Orchestrierung in Microsoft Visual Studio geöffnet ist.

Anwendungsfehler

Der Ausnahmehandler protokolliert den Fehler zuerst, indem er die PostError-Methode des ErrorHandler-Objekts in der Utilities-Assembly aufruft . Der Ausnahmehandler testet dann, ob es sich um einen System- oder Anwendungsfehler handelt. Der folgende Screenshot zeigt den Orchestrierungszweig, der Anwendungsausnahmen verarbeitet:

Application Branch von ExceptionHandler Orchestrati

Bei einem Anwendungsfehler erstellt die Orchestrierung eine Zeichenfolge, die den Fehler beschreibt, und ruft die ErrorHandlerOrch-Orchestrierung auf. Diese Orchestrierung sendet den Fehler in die Abwicklung, wo von einem Operator entschieden wird, ob der Fehler behoben oder der Vorgang beendet wird. Wenn der Operator den Fehler behebt, kehrt die reparierte Nachricht aus der ErrorHandlerOrch-Orchestrierung zurück und der Vorgang wird erneut ausgeführt. Der Ausnahmehandler ruft dazu die Invoke-Methode des Recaller-Objekts in der Utilities-Assembly auf. Das Recaller-Objekt verwendet Reflektion, um den Code aufzurufen, der den Fehler verursacht hat.

Wenn der Aufruf von Invoke erfolgreich ist, wird der Ausnahmehandler beendet. Andernfalls wird eine Schleife zurück ausgeführt, und der Aufruf von Invoke wird erneut versucht. Weitere Informationen zum Recaller-Objekt finden Sie unter Das Recaller-Objekt.

Systemfehler

Das folgende Diagramm zeigt den Systemfehlerbranch der ExceptionHandler-Orchestrierung :

Systemfehler der ExceptionHandler-Orchestrierung

Bei einem Systemfehler ruft der Ausnahmehandler zuerst die CheckInterrupt-Orchestrierung auf und wartet dann eine Minute. Durch die Wartezeit können temporäre, kurzfristige Fehler (z. B. Netzwerkverbindungsprobleme) behoben werden, bevor ein erneuter Versuch unternommen wird. Beim Ausführen von Remoteaufrufen besteht immer die Möglichkeit, dass Netzwerkprobleme auftreten.

Hinweis

Bei einem unterbrechbaren Entwurf sollten Sie in der Regel während oder unmittelbar nach einer Wartezeit auf Unterbrechungen testen.

Nach dem Warten verwendet der Handler die Invoke-Methode des Recaller-Objekts , um den ursprünglichen Code auszuführen. Wenn der Aufruf erfolgreich ausgeführt wurde, wird der Handler beendet. Andernfalls versucht der Handler noch zwei Mal, den ursprünglichen Code auszuführen. Wenn alle drei Versuche fehlschlagen, erstellt der Handler eine Fehlerzeichenfolge und ruft die ErrorHandlerOrch-Orchestrierung auf.

Wenn die Verarbeitung einer Systemausnahme zu einer Ausnahme führt, wird diese vom Ausnahmeblock abgefangen:

Exception Handler for System Error Branch

Der Ausnahmehandler testet die Art der Ausnahme und verringert bei einer Systemausnahme den Wiederholungsindikator oder legt ein Flag fest, um eine Anwendungsausnahme zu kennzeichnen.

Die „ErrorHandlerOrch“-Orchestrierung

Das folgende Diagramm zeigt den ersten Teil der ErrorHandlerOrch-Orchestrierung :

Fehlerhandlerorchestrierung, Erster Teil

Die ErrorHandlerOrch-Orchestrierung testet zuerst den IsBadOrder-Parameter , um festzustellen, ob es sich bei dem Fehler um eine fehlerhafte Reihenfolge (IsBadOrder ist true) oder einen anderen Fehler handelt. Wenn es sich bei dem Fehler um eine falsche Bestellung handelt, wird das Ziel der Nachricht von der Rückadresse der ursprünglichen Bestellung zugewiesen und die Nachricht zurück an das Kundendienstsystem gesendet. Wenn es sich bei dem Fehler nicht um eine falsche Bestellung handelt, erstellt die Orchestrierung eine Bestellungsfehlermeldung und sendet sie an das Betriebssystem.

Nach dem jeweiligen Fehler wartet die Orchestrierung auf eine Antwort- oder Interrupt-Meldung:

Error Handler Second Part

Wenn die Orchestrierung eine Antwort erhält, kehrt sie zum Aufrufer zurück. Wenn die Orchestrierung eine Interruptnachricht empfängt, übergibt sie die Nachricht an einen Interruptport und löst eine benutzerdefinierte InterruptException aus.

Weitere Informationen dazu, wie die Lösung Interrupts verwendet und behandelt, finden Sie unter Interruptbehandlung in der Geschäftsprozessverwaltungslösung.

Weitere Informationen

Ausnahmebehandlung in der Lösung für die Geschäftsprozessverwaltung
Benutzerdefinierte Ausnahmen
Interruptbehandlung in der Lösung für die Geschäftsprozessverwaltung
Das Recaller-Objekt