Planificación de los nodos de proceso de mensajes definido por el usuario

Planifique cómo escribir el nodo de proceso de mensajes o el nodo de salida y cómo navegar al mensaje en el nodo.

Factores de diseño

Antes de desarrollar e implementar el nodo de proceso de mensajes, tenga en cuenta los aspectos siguientes:

Navegación por los elementos de sintaxis

El intermediario proporciona funciones que su nodo puede llamar para recorrer la representación de árbol del mensaje, así como funciones y métodos que soportan la navegación desde el elemento actual hasta otros elementos:
  • Padre
  • Primer hijo
  • Último hijo
  • Elemento hermano anterior (izquierdo)
  • Elemento hermano siguiente (derecho)
Estas relaciones se muestran en la figura siguiente.
La figura muestra un elemento de sintaxis. Está conectada a otros elementos. Estos elementos son: el hermano anterior y el hermano siguiente situados, respectivamente, a la izquierda y a la derecha del elemento, el primer hijo y el último hijo, situados debajo del elemento, y el elemento padre, que está encima del elemento.

Otras funciones y métodos permiten manipular los propios elementos, con funciones y métodos que crean elementos, para establecer o consultar sus valores, para insertar elementos nuevos en el árbol y para suprimir elementos del árbol. Consulte Funciones de programa de utilidad de nodo en C y Funciones de programa de utilidad de analizador en C o la información de Javadoc para obtener más detalles.

La figura siguiente describe un árbol de elementos de sintaxis sencillo que muestra un rango completo de las interconexiones entre los elementos.
La figura muestra un árbol de elementos de sintaxis. El elemento A está en la parte superior del diagrama, encima del elemento B, que a su vez está encima de los elementos C, D y E, que están en el mismo nivel.

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. Puesto 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 figura siguiente muestra la primera generación de elementos de sintaxis de un mensaje de WebSphere MQ típico recibido por un intermediario. (No todos los mensajes tienen una cabecera MQRFH2.)
En la parte superior de la figura hay un recuadro con la etiqueta Root. Una línea conecta el recuadro con otro recuadro denominado Properties que está situado debajo del mismo, a la izquierda, y otra línea conecta con un recuadro denominado XML que está debajo y a la derecha. Entre estos dos, hay dos recuadros adicionales, denominados MQMD y MQRFH2.

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 para la cabecera MQMD. El hermano siguiente es la carpeta para la cabecera MQRFH2. La última carpeta representa el contenido del mensaje que, en este ejemplo, es un mensaje XML.

La figura anterior incluye una cabecera MQMD y una cabecera MQRFH2. Todos los mensajes recibidos por un nodo de proceso que maneja WebSphere MQ incluyen una cabecera MQMD; también se pueden incluir diversas cabeceras adicionales.

Navegación por un mensaje XML:

Examine el mensaje XML siguiente:
  <Business>
    <Product type='messaging'></Product>
    <Company>
      <Title>IBM</Title>
      <Location>Hursley</Location>
      <Department>WebSphere MQ</Department>
    </Company>
  </Business>
En este ejemplo, los elementos son de los tipos siguientes:
Elemento de nombre
Business, Product, Company, Title, Location, Department
Elemento de valor
IBM, Hursley, WebSphere MQ
Elemento de nombre-valor
type='messaging'

Utilice las funciones y métodos proporcionados del programa de utilidad del nodo (o las funciones similares del programa de utilidad de analizador) para desplazarse por un mensaje. Utilizando el mensaje XML mostrado, debe llamar al elemento cniRootElement en primer lugar con el mensaje que ha recibido el nodo como entrada para esta función. En Java, debe llamar a getRootElement en el objeto MbMessage de entrada. Esta llamada devuelve un elemento MbElement que representa la raíz del elemento. No modifique este elemento raíz en el nodo definido por el usuario.

La figura de la primera generación de los elementos de sintaxis de un mensaje típico recibido por el intermediario, muestra que el último hijo del elemento raíz es la carpeta que contiene el árbol del analizador XML. Navegue 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, llame a cniFirstChild (en C) o getFirstChild (en Java) para desplazarse a este punto en el árbol. Utilice cniElementType o getType para obtener su tipo (que es name), seguido de cniElementName o getName para que devuelva el propio nombre (Business).

El elemento <Business> tiene dos hijos, <Product> y <Company>. Utilice cniFirstChild o getFirstChild seguido de cniNextSibling o getNextSibling para desplazarse a cada hijo, uno después del otro.

El elemento <Product> tiene un atributo (type='messaging'), que es un elemento hijo. Utilice cniFirstChild o getFirstChild para desplazarse hasta este elemento y cniElementType o getType para devolver su tipo (que es nombre-valor). Utilice cniElementName o getName 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 es cniElementCharacterValue. En Java utilice el método getValue, que devuelve un objeto Java que representa el valor de elemento.

El elemento <Company> tiene tres hijos, cada uno de los cuales tiene un hijo que es un elemento de valor (IBM, Hursley y WebSphere MQ). Utilice las funciones que ya se han descrito para desplazarse a ellos 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. Consulte Funciones de programa de utilidad de nodo en C y Funciones de programa de utilidad de analizador en C o la API Java definida por el usuario para obtener más información.

Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última actualización : 2009-02-16 13:56:08

as01395_