Partager via


Création de gestionnaires d’exceptions personnalisés

Pour qu’une application détecte et réagisse aux exceptions, les développeurs doivent fournir un gestionnaire d’exceptions. Ce gestionnaire d’exceptions peut s’abonner à un seul type de message d’exception ou à des messages d’exception générés à partir de tout ou partie d’un système ou d’une application. Par exemple, vous pouvez avoir besoin d’un seul gestionnaire pour tous les messages d’un système particulier (par exemple, toutes les exceptions qui se produisent dans le système de paie), ou vous pouvez à la place exiger des gestionnaires ciblés pour des défaillances spécifiques (par exemple, la détection de l’échec du processus d’impression case activée).

Pour vous abonner à un type spécifique d’exception, utilisez une orchestration qui a un filtre sur la forme réception d’activation, comme illustré dans l’exemple suivant.

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

Vous pouvez également avoir une condition de filtre sur un port d’envoi qui envoie un message au système de fichiers ou par courrier électronique si le message répond à une condition de filtre spécifique.

Exemples de projets de gestion des exceptions

Microsoft BizTalk ESB Toolkit inclut plusieurs exemples d’applications BizTalk qui illustrent la gestion des exceptions. Ces exemples se trouvent dans le dossier \Source\Samples\Exception Handling.

Il existe également quatre projets BizTalk, situés dans la solution GlobalBank.ESB.Samples.ExceptionHandling, qui montrent comment utiliser le mécanisme de routage des exceptions d’orchestration en échec ESB. Ces projets sont préconfigurés pour être déployés dans l’application BizTalk GlobalBank.ESB. Les projets sont les suivants :

  • ESB. ExceptionHandling.Schemas. Ce projet contient les schémas utilisés pour les exemples d’orchestrations.

  • ESB. ExceptionHandling.Pipelines. Ce projet contient le pipeline d’envoi configuré avec le processeur d’exceptions, utilisé dans un port d’envoi qui s’abonne à toutes les exceptions. Cela inclut les exceptions générées par BizTalk et les exceptions générées par l’infrastructure de gestion des exceptions.

  • ESB. ExceptionHandling.Processes. Ce projet contient l’orchestration EAIProcess.odx, qui simule une exception en tentant de diviser par zéro et appelle les méthodes CreateFaultMessage et AddMessage pour générer un message d’erreur approprié, comme illustré dans la figure 1.

    Exemple de processus d’orchestration

    Figure 1

    Orchestration EAIProcess.odx dans l’exemple de projet Process

  • ESB. ExceptionHandling.Handlers. Ce projet contient l’orchestration EAIGenericHandler.odx, qui appelle la méthode GetMessages et effectue une itération dans messageCollection à l’aide de la méthode MoveNext , comme illustré dans la figure 2.

    Exemple de gestionnaires d’orchestration

    Figure 2

    Orchestration EAIGenericHandler.odx dans l’exemple de projet Handlers

    L’ESB. Le projet ExceptionHandling.Handlers contient également l’orchestration EAIProcessHandler.odx, qui appelle les méthodes GetMessage et GetException , comme illustré dans la figure 3.

    Exemple de processus de gestionnaires d’orchestration

    Figure 3

    Orchestration EAIProcessHandler.odx dans l’exemple de projet Handlers