Flujo Request para el patrón Divisor de mensajes para WebSphere MQ: unidireccional (para XML)
Este patrón utiliza un solo flujo de mensajes.
- El nodo Input espera un mensaje XML bien formado y se ha configurado para utilizar el analizador XMLNSC. Si un mensaje entrante cualquiera contiene una cabecera MQRFH2 que cambia el dominio, se produce un error y el mensaje se retrotrae.
- La validación del mensaje es opcional y se especifica en el parámetro de patrón Validación necesaria.
La validación no es inmediata y se realiza a medida que se extrae cada elemento.
- El flujo de mensajes se ejecuta como una transacción y no se confirma a menos que todos los elementos necesarios se hayan extraído y escrito satisfactoriamente en una cola.
- El control principal de este flujo es el nodo Propagate Element Compute.
Este nodo crea una variable local para contener un árbol variable que es una copia de la entrada.
Este flujo recorre el árbol de mensajes y se mueve a un elemento hijo en un código de contenedor y se propaga hacia delante.
A medida que se selecciona cada elemento, el elemento anterior se elimina para reducir el uso de memoria.
- La estructura del mensaje se determina mediante los parámetros de patrón y si un mensaje no se ajusta a esta estructura, se produce un error.
- Se comprueba que el mensaje incluye la vía de acceso del contenedor, es decir, el contenedor para todos los elementos que deben procesarse. Si esta vía de acceso de contenedor se especifica como *:*, el contenedor se considera como código raíz, sea cual sea su nombre, y se extraen los elementos del mensaje que son hijos del elemento raíz.
- Si el parámetro de patrón Nombre de elemento de mensaje es *:*, se procesan todos los elementos que son hijos del contenedor.
Si se especifica cualquier otro valor, sólo se extraen los elementos del mensaje que tengan códigos que coincidan con el nombre de elemento de mensaje.
El elemento de mensaje extraído se pasa para continuar su proceso.
- El flujo de mensajes incluye el subflujo MessageProcessor, que de forma predeterminada no tiene ningún efecto porque sólo contiene un nodo Passthrough. El subflujo está incluido para proporcionar un lugar que una instancia de patrón se puede personalizar utilizando herramientas estándar sin efectuar cambios en la estructura del patrón.
- El mensaje se pasa al subflujo Route, que lo dirige a la cola correcta de WebSphere MQ.
Una anomalía al buscar una ruta o alguna excepción, define el estado de anomalía y dirige el control al nodo Failure.
- Si la Acción de mensaje erróneo es Guardar,
el nodo Failure se conecta a un nodo MQOutput para guardar el mensaje. El control se devuelve al nodo Compute para extraer el siguiente elemento.
- Si la Acción de mensaje erróneo es Cancelar, el nodo Failure no se conecta y el nodo Compute genera un error de usuario que causa la retrotracción del flujo.
- Cuando falla una acción de mover al elemento siguiente, porque todos los elementos ya se han procesado, se invoca al subflujo
Log, si los parámetros de patrón necesitan el inicio de sesión.
En ese momento, el flujo de mensajes se detiene siempre satisfactoriamente y la transacción se confirma. Los errores que se produzcan en el registro se detectan y se procesan escribiéndolos en un nodo Trace.
- Si el parámetro Routing se establece en Buscar rutas y el parámetro de patrón Renovación de memoria caché especifica que se necesita la renovación de la memoria caché, el flujo principal contiene un segundo nodo Input que lee de la cola definida por el parámetro de patrón Renovar cola. Cualquier mensaje que se envía a esta cola borra la variable compartida CacheQueueTable.valid, de forma que la memoria caché se renueva antes de la siguiente búsqueda.