Création et publication des messages d’erreur
Pour vous aider à comprendre comment utiliser les fonctionnalités de l’Infrastructure de gestion des exceptions pour gérer les exceptions, cette section présente un scénario courant basé sur l’envoi d’un message à une application ESB.
Le scénario consiste à envoyer une facture au système par un utilisateur. Pendant le traitement de la facture dans une orchestration, le moteur de règles métier BizTalk lève une exception d’application, car une partie des données est incorrecte. Le processus métier doit intercepter l’exception, envoyer le message incriminé à une autre personne ou système qui peut corriger le message, puis renvoyer le message pour traitement.
Lorsque vous utilisez la fonctionnalité de routage des exceptions d’orchestration esb, les étapes de processus sont les suivantes :
Le code dans le gestionnaire d’exceptions détecte l’erreur et crée un message d’erreur en appelant la méthode CreateFaultMessage , comme illustré dans l’exemple de code suivant.
// Create fault exception message. faultMsg = Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.CreateFaultMessage();
Le mécanisme d’exception ESB insère automatiquement la description de l’erreur dans le contexte du message d’erreur (par exemple, « Le moteur de règles métier a levé une erreur diviser par zéro lors du traitement de la stratégie LoanProcessing . »).
Le mécanisme d’exception ESB promeut automatiquement les propriétés spécifiques à l’échec et les propriétés spécifiques à l’application dans le contexte du message d’erreur et définit les valeurs de l’environnement actuel. Ces propriétés sont les suivantes :
Application (renseignée automatiquement)
DateTime (renseigné automatiquement en tant que valeur UTC)
Description (renseigné automatiquement , message d’exception)
ErrorType (renseigné automatiquement, le type d’exception)
MachineName (renseigné automatiquement , nom du serveur actuel)
Étendue (renseignée automatiquement : forme d’étendue qui contient le gestionnaire d’exceptions actuel)
ServiceName (renseigné automatiquement, le nom de l’orchestration)
ServiceInstanceID(renseigné automatiquement : l’ID d’orchestration instance en tant que GUID)
Le code dans le gestionnaire d’exceptions définit d’autres propriétés du message d’erreur en fonction des besoins, comme indiqué dans l’exemple de code suivant.
// Set fault message properties. faultMsg.Body.FailureCategory = "MessageBuild"; faultMsg.Body.FaultCode = 1000; faultMsg.Body.FaultDescription = "Some error occurred"; faultMsg.Body.FaultSeverity = Microsoft.Practices.ESB.ExceptionHandling.FaultSeverity.Severe;
Le mécanisme d’exception ESB sérialise automatiquement l’objet Exception actuel dans le message d’erreur.
Si vous le souhaitez, le code du gestionnaire d’exceptions peut ajouter des messages d’orchestration actuels au message d’erreur ESB à l’aide de la méthode AddMessage(faultMsg, messageToAdd). Cette méthode sérialise et conserve le message, y compris toutes les propriétés de contexte, comme illustré dans l’exemple de code suivant.
// Add other current orchestration messages to the fault message. Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.AddMessage( faultMsg, approvedRequestMsg); Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.AddMessage( faultMsg, DeniedRequestMsg, @"c:\temp");
Le code du gestionnaire d’exceptions publie le message d’erreur ESB dans la base de données Message Box à l’aide d’un port lié direct.
Si la publication réussit, les événements suivants se produisent :
Les abonnements d’orchestration ou de port d’envoi peuvent traiter le message d’erreur ESB et extraire tous les messages ajoutés, avec leurs valeurs de propriété de contexte.
Un gestionnaire d’exceptions global (un port d’envoi) publie automatiquement le message d’erreur ESB sur le portail de gestion ESB.