Manejar excepciones en flujos de agregación

Cuando utilice flujos de agregación, puede encontrar que se producen excepciones. En este tema se indica cómo puede manejarlos.

Antes de empezar:

Para realizar esta tarea, debe haber completado las tareas siguientes:

Manejo de excepciones

Si se ha detectado un error en sentido descendente de un nodo AggregateReply, el intermediario genera una excepción. Otro nodo del flujo de mensajes puede generar también una excepción utilizando la sentencia THROW de ESQL. En cualquier caso, cuando se genera una excepción se capta en uno de estos dos sitios:

  • El nodo de entrada al que llegan las respuestas
  • El nodo AggregateReply

La tabla siguiente lista los sucesos y lo que sucede a una excepción que se ha generado en sentido descendente del nodo AggregateReply.

Suceso Mensaje propagado Terminal de salida Excepción detectada en
Llega una respuesta prevista al nodo de entrada y se pasa al terminal de entrada del nodo AggregateReply. Es la última respuesta necesaria para completar una agregación. El mensaje de respuesta agregado que contiene todas las respuestas De salida Nodo de entrada
Llega una respuesta imprevista al nodo de entrada y se pasa al nodo AggregateReply. No se reconoce como una respuesta válida y la propiedad Tiempo de espera de mensaje desconocido se establece en 0. Mensaje recibido Desconocido Nodo de entrada
Se produce un tiempo de espera excedido debido a que no han llegado todavía todas las respuestas para una agregación. Se ha recibido el mensaje de respuesta agregado que contiene todas las respuestas Tiempo de espera Nodo AggregateReply
Se produce un tiempo de espera desconocido debido a que el mensaje retenido no se ha identificado como una respuesta válida. Mensaje retenido Desconocido Nodo AggregateReply
Se ha detectado una agregación como completa en algún momento que no era el momento en que ha llegado la última respuesta. El mensaje de respuesta agregado que contiene todas las respuestas De salida Nodo AggregateReply

Si desea manejar los errores que se producen en flujos de agregación, debe captar estas excepciones en todas las instancias de cada uno de estos nodos del flujo de mensajes. Para hacerlo:

  1. Vaya a Perspectiva de Desarrollo de aplicaciones de intermediario.
  2. Abra el flujo de mensajes con el que desea trabajar.
  3. Si desea manejar estas excepciones por su cuenta, conecte el terminal de cada nodo AggregateReply y de entrada a una secuencia de nodos que maneje el error que se ha producido.

    Si desea un método unificado para manejar errores, asocie terminales de captación de todos estos nodos a un sola secuencia de nodos o cree un subflujo que maneje errores con coherencia de un solo modo y asocie dicho subflujo a cada terminal de captación.

  4. Si desea que el intermediario maneje estas excepciones utilizando el manejo de errores por omisión, no conecte los terminales de captación de estos nodos.
Si conecta el terminal de captación del nodo AggregateReply y desea que el mensaje de salida se propague a través de este terminal a un destino desde el que puede recuperarse para su proceso posterior, debe incluir un nodo Compute en el flujo de captación para proporcionar cualquier proceso específico del transporte. Por ejemplo, debe añadir una cabecera MQMD si desea colocar el mensaje en una cola WebSphere MQ desde un nodo MQOutput.

El ejemplo ESQL siguiente muestra cómo puede añadir una cabecera MQMD y pasar las respuestas que ha recibido el nodo AggregateReply:

-- Añadir MQMD
SET OutputRoot.MQMD.Version = 2;
.
-- Incluir respuestas consolidadas en el mensaje de salida
SET OutputRoot.XML.Data.Parsed = InputRoot.ComIbmAggregateReplyBody;
.

Si desea propagar la información acerca de la excepción en el mensaje de salida, también debe establecer la propiedad Modalidad de cálculo del nodo Compute en un valor que incluya Excepción.

Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac12340_