El árbol de mensaje forma parte del árbol lógico de mensaje en el que el intermediario almacena su representación interna del cuerpo del mensaje.
La raíz de un árbol de mensaje se denomina Raíz. El árbol de mensaje siempre está presente y se pasa de nodo a nodo en una sola instancia de un flujo de mensajes.
El árbol de mensaje incluye todas las cabeceras que están presentes en el mensaje, además del cuerpo del mensaje. También incluye el subárbol de propiedades (descrito en Analizadores), si lo ha creado el analizador. Si el árbol de mensaje lo ha creado un analizador suministrado, el elemento que representa el subárbol de propiedades va seguido de cero o más cabeceras.
Si se ha recibido el mensajes a través de WebSphere MQ Enterprise Transport, WebSphere MQ Mobile Transport o WebSphere MQ Telemetry Transport, la primera cabecera (el segundo elemento) debe ser el MQMD. Cualquier cabecera adicional incluida en el mensaje aparece en el árbol en el mismo orden que en el mensaje. El último elemento debajo de la raíz del árbol de mensaje siempre es el cuerpo del mensaje.
Si el árbol de mensaje lo ha creado un analizador definido por el usuario, el árbol Properties, si está presente, va seguido del cuerpo del mensaje.
A continuación, se muestra la estructura del árbol de mensaje. Si el mensaje de entrada no es un mensaje WebSphere MQ, es posible que las cabeceras mostradas no aparezcan. Si el árbol lo ha creado un analizador definido por el usuario, es posible que el árbol Properties no aparezca.
El árbol del cuerpo del mensaje es una estructura de elementos hijo (descrita a continuación) que representa el contenido del mensaje (datos) y refleja la estructura lógica de dicho contenido. El árbol del cuerpo del mensaje lo crea el analizador (ya sea un analizador suministrado o un analizador definido por el usuario) tal como se describe en Analizadores.
Cada elemento del árbol analizado tiene uno de esto tres tipos:
Para obtener información acerca de cómo se rellena el árbol de mensaje, consulte Cómo se llena el árbol de mensaje.
La carpeta de propiedades es el primer elemento del árbol de mensaje y contiene información sobre las características del mensaje.
La raíz de la carpeta de propiedades se denomina Properties. Es el primer elemento bajo el elemento raíz. Todos los árboles de mensaje generados por los analizadores incorporados incluyen una carpeta de propiedades para el mensaje. Si crea su propio analizador definido por el usuario, puede elegir si el analizador crea una carpeta de propiedades. Sin embargo, para una mayor coherencia, se recomienda incluir esta acción en el analizador definido por el usuario.
La carpeta de propiedades se crea y se inserta en el árbol a continuación de todas las cabeceras pero antes de los datos del mensaje. Contiene un conjunto de propiedades estándar que puede manipular en los nodos del flujo de mensajes de la misma manera que cualquier otra propiedad. La mayor parte de estos campos se correlacionan con campos en las cabeceras de WebSphere MQ soportadas, si existen, y se pasan al analizador adecuado cuando se entrega un mensaje de un nodo a otro.
Por ejemplo, la cabecera MQRFH2 contiene información sobre el conjunto de mensajes, el tipo y el formato. Estos valores se almacenan en la carpeta de propiedades como MessageSet, MessageType y MessageFormat. Para acceder a estos valores utilizando ESQL en los nodos de proceso de mensajes, consulte estos valores en la carpeta de propiedades; no consulte directamente los campos de las cabeceras de las que se derivan.
Si el mensaje se convierte en una corriente de bits, por ejemplo en un nodo de salida, las propiedades que permanecen únicamente en la carpeta de propiedades (es decir, no en cualquier cabecera de los mensajes de salida) no se incluyen en ninguna parte del mensaje de salida.
El analizador Properties asegura que los valores de los campos de cabecera coincidan con los valores de la carpeta de propiedades en la entrada y la salida de cada nodo. Al salir de un nodo, el analizador de propiedades invoca cada analizador de cabecera con los valores que contiene actualmente. A continuación, solicita los valores que devuelve el analizador de cabecera y actualiza sus propios valores. Si ha codificado ESQL en el nodo que actualiza valores en la carpeta de propiedades y/o en la cabecera, estos valores coinciden siempre cuando el árbol se pasa desde ese nodo. Sin embargo, si ha actualizado un campo en la carpeta de propiedades y en la cabecera con valores diferentes, el valor que establezca en la cabecera quedará sobregrabado por el valor establecido en la carpeta de propiedades.
Cuando el proceso de flujo de mensajes se ha completado, se descarta la carpeta de propiedades.