Creación y publicación de mensajes de error
Para ayudarle a comprender cómo usar las características del marco de administración de excepciones para administrar excepciones, en esta sección se presenta un escenario común basado en el envío de un mensaje a una aplicación ESB.
El escenario consta de un usuario que envía una factura al sistema. Durante el procesamiento de la factura en una orquestación, el motor de reglas de negocios de BizTalk produce una excepción de aplicación porque alguna parte de los datos es incorrecta. El proceso de negocio debe detectar la excepción, enviar el mensaje incorrecto a otra persona o sistema que pueda corregir el mensaje y, a continuación, volver a enviar el mensaje para su procesamiento.
Al usar la característica de enrutamiento de excepciones de orquestación con errores de ESB, los pasos del proceso son los siguientes:
El código del controlador de excepciones detecta el error y crea un mensaje de error llamando al método CreateFaultMessage , como se muestra en el ejemplo de código siguiente.
// Create fault exception message. faultMsg = Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.CreateFaultMessage();
El mecanismo de excepción de ESB inserta automáticamente la descripción del error en el contexto del mensaje de error (por ejemplo, "El motor de reglas de negocios produjo una división por cero error al procesar la directiva LoanProcessing").
El mecanismo de excepción DE ESB promueve automáticamente propiedades específicas de errores y propiedades específicas de la aplicación en el contexto del mensaje de error y establece los valores del entorno actual. Estas propiedades son las siguientes:
Aplicación (rellenada automáticamente)
DateTime (rellenado automáticamente como un valor UTC)
Descripción (rellenado automáticamente: el mensaje de excepción)
ErrorType (rellenado automáticamente: el tipo de excepción)
MachineName (rellenado automáticamente, el nombre del servidor actual)
Ámbito (rellenado automáticamente: la forma Ámbito que contiene el controlador de excepciones actual)
ServiceName (rellenado automáticamente, el nombre de la orquestación)
ServiceInstanceID(rellenado automáticamente: el identificador de instancia de orquestación como GUID)
El código del controlador de excepciones establece otras propiedades del mensaje de error según sea necesario, como se muestra en el ejemplo de código siguiente.
// 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;
El mecanismo de excepción DE ESB serializa automáticamente el objeto Exception actual en el mensaje de error.
Opcionalmente, el código del controlador de excepciones puede agregar mensajes de orquestación actuales al mensaje de error de ESB mediante el método AddMessage(faultMsg, messageToAdd). Este método serializa y conserva el mensaje, incluidas todas las propiedades de contexto, como se muestra en el ejemplo de código siguiente.
// 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");
El código del controlador de excepciones publica el mensaje de error de ESB en la base de datos cuadro de mensajes mediante un puerto enlazado directo.
Si la publicación se realiza correctamente, se producen los siguientes eventos:
Las suscripciones de puerto de envío o orquestación pueden procesar el mensaje de error de ESB y extraer los mensajes agregados, junto con sus valores de propiedad de contexto.
Un controlador de excepciones global (un puerto de envío) publica automáticamente el mensaje de error de ESB en el Portal de administración de ESB.