Freigeben über


Erstellen von benutzerdefinierten Ausnahmehandlern

Damit eine Anwendung Ausnahmen erkennen und darauf reagieren kann, müssen Entwickler einen Ausnahmehandler bereitstellen. Dieser Ausnahmehandler kann einen einzelnen Ausnahmemeldungstyp oder Ausnahmemeldungen abonnieren, die aus einigen oder allen Teilen eines Systems oder einer Anwendung generiert wurden. Beispielsweise benötigen Sie möglicherweise nur einen einzelnen Handler für alle Nachrichten aus einem bestimmten System (z. B. alle Ausnahmen im Lohnbuchhaltungssystem), oder Sie benötigen stattdessen gezielte Handler für bestimmte Fehler (z. B. erkennen, ob der Überprüfungsdruckvorgang fehlschlägt).

Um einen bestimmten Ausnahmetyp zu abonnieren, verwenden Sie eine Orchestrierung mit einem Filter für das aktivierende Receive-Shape, wie im folgenden Beispiel gezeigt.

Microsoft.Practices.ESB.ExceptionHandling.Schemas.Property.FaultCode == "1000";  

Möglicherweise verfügen Sie auch über eine Filterbedingung für einen Sendeport, der eine Nachricht an das Dateisystem sendet, oder per E-Mail, wenn die Nachricht eine bestimmte Filterbedingung erfüllt.

Beispielprojekte zur Ausnahmebehandlung

Das Microsoft BizTalk ESB Toolkit enthält mehrere BizTalk-Beispielanwendungen, die die Ausnahmebehandlung veranschaulichen. Diese Beispiele finden Sie im Ordner \Source\Samples\Exception Handling.

Es gibt auch vier BizTalk-Projekte, die sich in der Projektmappe GlobalBank.ESB.Samples.ExceptionHandling befinden und die veranschaulichen, wie der ESB-Mechanismus für Fehlerorchestrierungs-Ausnahmerouting verwendet wird. Diese Projekte sind für die Bereitstellung in der BizTalk-Anwendung GlobalBank.ESB vorkonfiguriert. Die Projekte sind wie folgt:

  • ESB. ExceptionHandling.Schemas. Dieses Projekt enthält die Schemas, die für die Beispiel orchestrierungen verwendet werden.

  • ESB. ExceptionHandling.Pipelines. Dieses Projekt enthält die Sendepipeline, die mit dem Ausnahmeprozessor konfiguriert ist und in einem Sendeport verwendet wird, der alle Ausnahmen abonniert. Dies umfasst Ausnahmen, die von BizTalk generiert wurden, und Ausnahmen, die vom Exception Management Framework generiert wurden.

  • ESB. ExceptionHandling.Processes. Dieses Projekt enthält die EAIProcess.odx-Orchestrierung, die eine Ausnahme simuliert, indem versucht wird, durch null zu dividieren, und ruft die Methoden CreateFaultMessage und AddMessage auf, um eine geeignete Fehlermeldung zu generieren, wie in Abbildung 1 dargestellt.

    Orchestrierungsprozesse: Beispiel

    Abbildung 1

    Die EAIProcess.odx-Orchestrierung im Prozessbeispielprojekt

  • ESB. ExceptionHandling.Handlers. Dieses Projekt enthält die EAIGenericHandler.odx-Orchestrierung, die die GetMessages-Methode aufruft und die MessageCollection mithilfe der MoveNext-Methode durchläuft, wie in Abbildung 2 dargestellt.

    Orchestrierungshandler beispielgenerisch

    Abbildung 2

    Die EAIGenericHandler.odx-Orchestrierung im Handlers-Beispielprojekt

    Der ESB. Das ExceptionHandling.Handlers-Projekt enthält auch die EAIProcessHandler.odx-Orchestrierung, die die Methoden GetMessage und GetException aufruft, wie in Abbildung 3 dargestellt.

    Orchestrierungshandler Beispielprozess

    Abbildung 3

    Die EAIProcessHandler.odx-Orchestrierung im Handlers-Beispielprojekt