En este tema se describe cómo escribir el nodo de proceso de mensajes para asegurarse de que funciona correctamente. Describe cómo puede utilizar el nodo de proceso de mensajes para navegar por un mensaje.
Un elemento de sintaxis con conexiones con otros elementos.
Árbol de elementos de sintaxis
El elemento A es el elemento raíz del árbol. No tiene padre porque es la raíz. Tiene un primer hijo del elemento B. Debido a que A no tiene más hijos, el elemento B también es el último hijo de A.
El elemento B tiene tres hijos: los elementos C, D y E. El elemento C es el primer hijo del B; el elemento E es el último hijo de B.
El elemento C tiene dos hermanos: los elementos D y E. El hermano siguiente del elemento C es el elemento D. El hermano siguiente del elemento D es el elemento E. El hermano anterior del elemento E es el elemento D. El hermano anterior del elemento D es el elemento C.
La primera generación de los elementos de sintaxis de un mensaje típico
En la primera generación se suele hacer referencia a estos elementos como "carpetas" en las que se almacenan los elementos de sintaxis que representan cabeceras de mensajes y datos de contenido de mensajes. En este ejemplo, el primer hijo de la raíz es la carpeta Properties. El hermano siguiente de Properties es la carpeta del MQMD de los mensajes WebSphere MQ de entrada. El hermano siguiente es la carpeta para la cabecera MQRFH2. Finalmente, está la carpeta que representa el contenido del mensaje que, en este ejemplo, es un mensaje XML.
La figura anterior incluye un MQMD y una cabecera MQRFH2. Todos los mensajes que recibe el nodo de proceso de MQmessage incluyen una cabecera MQMD y también pueden incluirse muchas otras cabeceras.
<Business>
<Product type='messaging'></Product>
<Company>
<Title>IBM</Title>
<Location>Hursley</Location>
<Department>WebSphere MQ</Department>
</Company>
</Business>
Puede utilizar las funciones y métodos del programa de utilidad del nodo (o funciones de programa de utilidad de analizador similares) para desplazarse por un mensaje. Tomando como ejemplo el mensaje XML mostrado anteriormente, debe llamar al elemento cniRootElement en primer lugar con el mensaje que ha recibido el nodo como entrada para esta función. En Java, tiene que llamar a getRootElement en el mensaje MbMessage de entrada. Esto devuelve un elemento MbElement que representa la raíz del elemento. El elemento raíz no se debe modificar mediante un nodo definido por el usuario.
La figura anterior muestra que el último hijo del elemento raíz es la carpeta que contiene el árbol del analizador XML. Puede navegar hasta esta carpeta llamando a cniLastChild (con la salida de la llamada anterior como entrada para esta función) en un nodo C o llamando al método getLastChild del elemento raíz en un nodo Java.
En el nivel superior del mensaje sólo hay un elemento (<Business>), por lo tanto si se llama a cniFirstChild (en C) o a getFirstChild (en Java) se traslada a este punto del árbol. Puede utilizar cniElementType o getElementType para obtener su tipo (que es name), seguido de cniElementName o getName para que devuelva el propio nombre (Business).
<Business> tiene dos hijos, <Product> y <Company>, por lo tanto, puede utilizar cniFirstChild o getFirstChild seguido de cniNextSibling o de getNextSibling para desplazarse por ellos por orden.
<Product> tiene un atributo (type='messaging'), que es un elemento hijo. Vuelva a utilizar cniFirstChild o getFirstChild para desplazarse por este elemento y cniElementType o getType para devolver su tipo (que es nombre-valor). Utilice cniElementName o getName como antes para obtener el nombre. Para obtener el valor, llame a cniElementValueType para devolver el tipo, seguido de la función adecuado en el grupo cniElementValue. En este ejemplo, será cniElementCharacterValue. En Java utilice el método getValue, que devolverá un objeto Java que representará el valor del elemento.
<Company> tiene tres hijos, cada uno de los cuales tiene un hijo que es un elemento de valor (IBM, Hursley y WebSphere MQ). Puede utilizar las funciones que ya se han descrito para desplazarse por las mismas y acceder a sus valores.
Se dispone de otras funciones para copiar el árbol de elementos, o parte del mismo. A continuación, la copia se puede modificar añadiendo o suprimiendo elementos y modificando sus nombres y valores para crear un mensaje de salida.