Analizadores

Un analizador es un programa que interpreta la corriente de bits física de un mensaje de entrada y crea una representación lógica interna del mensaje en una estructura en árbol. El analizador también vuelve a generar una corriente de bits para un mensaje de salida a partir de la representación interna de árbol de mensajes.

Se llama a un analizador cuando la corriente de bits que representa un mensaje de entrada se convierte a la forma interna que el nodo de integración puede manejar, esta invocación se conoce como análisis. El formulario interno, una estructura de árbol lógica, se describe en Estructura de árbol lógico. Se describe como un árbol porque los mensajes tienen una estructura típicamente jerárquica; un buen ejemplo de esta estructura es XML. La forma en que el analizador interpreta la corriente de bits es exclusiva de ese analizador; por lo que el árbol de mensajes lógico que se crea a partir de la corriente de bits varía de un analizador a otro.

El analizador al que se llama depende de la estructura de un mensaje, que conoce como la plantilla de mensajes. La información de la plantilla de mensaje comprende el dominio de mensajes, modelo de mensajes y el formato físico del mensaje. Juntos, estos valores identifican la estructura de los datos que contiene el mensaje.

Un analizador también se llama cuando un árbol lógico que representa un mensaje de salida se convierte en una corriente de bits; esta acción del analizador se conoce como escritura. Normalmente, un nodo de salida genera un mensaje de salida al final del flujo de mensajes. No obstante, puede conectar más nodos a un nodo de salida para continuar el proceso del mensaje.

El dominio de mensajes identifica el analizador que se utiliza para analizar y escribir instancias del mensaje. Las partes restantes de la plantilla de mensaje, modelo de mensaje, tipo de mensaje y el formato físico, son opcionales y lo utilizan el analizador dirigido por modelos como por ejemplo el analizador MRM.

La estructura lógica del mensaje normalmente se correlaciona con el contenido de negocio del mensaje; por ejemplo, contiene un nombre de cliente, dirección y número de cuenta. Sólo cuando se envía un mensaje a través de una conexión, las características físicas son importantes e influyen en la construcción de la corriente de bits.

El nodo de integración requiere acceso a un analizador para cada dominio de mensajes al que pertenecen los mensajes de entrada y salida. Además, el nodo de integración requiere un analizador para cada cabecera de mensaje identificable que se incluye en el mensaje de entrada o salida. Los analizadores se llaman cuando los necesita el flujo de mensajes.

Analizadores del cuerpo del mensaje

IBM® Integration Bus proporciona soporte incorporado para mensajes en los siguientes dominios de mensajes proporcionando analizadores de cuerpo de mensajes:

Consulte ¿Qué analizador de cuerpo debe utilizar? para una discusión sobre qué analizador de cuerpo de mensaje debe utilizarse bajo qué circunstancias.

Especifique qué dominio de mensaje se puede utilizar para el mensaje en el lugar del flujo de mensajes en el que se inicia el análisis o la escritura.
  • Para analizar una corriente de bits de mensaje, generalmente se establece la propiedad Dominio de mensajes del nodo de entrada que recibe el mensaje. Pero, si está iniciando la operación de análisis, utilice la cláusula DOMAIN de la sentencia CREATE.

    El árbol de mensajes que se crea se describe en Estructura de árbol de mensajes. Su forma exacta puede cambiar a medida que progresa por el flujo de mensajes, en función de lo que hagan los nodos.

    El último elemento hijo del elemento raíz del árbol de mensajes adopta el nombre del analizador del cuerpo de mensaje que ha creado el árbol. Por ejemplo, si la propiedad Dominio de mensajes se ha establecido en MRM, el último elemento hijo de la raíz se denomina MRM, lo cual indica que el árbol de mensajes es propiedad del analizador MRM.

  • Para escribir un mensaje, el nodo de integración invoca el analizador de cuerpo de propietario para crear una corriente de bits desde el árbol de mensajes.

Algunos analizadores del cuerpo de mensajes están dirigidos por modelo, lo que significa que utilizan mensajes predefinidos de un conjunto de mensajes para el análisis y la escritura. Los analizadores MRM, SOAP, DataObject, IDOC y, opcionalmente, XMLNSC son analizadores dirigidos por modelo. Para utilizar estos analizadores, los mensajes deben modelarse en un conjunto de mensajes y desplegarse en el nodo de integración desde IBM Integration Toolkit.

Otros analizadores de mensajes están programados, lo que significa que los mensajes que analizan y escriben son mensajes autodefinidos y no se requiere ningún conjunto de mensajes. Consulte Mensajes predefinidos y autodefinidos.

Cuando utiliza un analizador dirigido por modelos, también debe especificar el modelo de mensaje y, de manera opcional, el tipo y formato de mensaje de forma que el analizador pueda localizar la definición del mensaje desplegado con el que guía el análisis o la escritura del mensaje.

Para analizar un mensaje de secuencia de bits, generalmente se establecen las propiedadesModelo de mensaje, Mensaje y Formato físico del nodo de entrada que recibe el mensaje. O si está iniciando la operación de análisis en ESQL, se utilizan las cláusulas SETTYPE y FORMAT de la sentencia CREATE. Esta información se copia en la carpeta Propiedades del árbol de mensajes.

Para escribir un mensaje, el nodo de integración invoca el analizador de cuerpo de propietario para crear una corriente de bits desde el árbol de mensajes. Si el analizador es un analizador dirigido por modelo, utiliza los campos MessageSet, MessageType y MessageFormat de la carpeta Properties.

Si el tipo de mensaje o el formato de mensaje son necesarios, depende del dominio de mensajes.

Incluso si el analizador de cuerpo no está dirigido por modelos, es una buena práctica crear y utilizar un conjunto de mensajes en IBM Integration Toolkit, ya que simplifica el desarrollo de las aplicaciones de flujo de mensajes, aunque el conjunto de mensajes no esté desplegado en el entorno de ejecución de IBM Integration Bus . Consulte ¿Por qué mensajes modelo? para obtener información sobre las ventajas de crear un conjunto de mensajes.

Analizadores de cabeceras

IBM Integration Bus también proporciona analizadores para las siguientes cabeceras de mensaje, que las aplicaciones pueden incluir en los mensajes de entrada o salida:

Todos los analizadores de cabeceras están programados y no utilizan un conjunto de mensajes durante el análisis o escritura.

Analizadores definidos por el usuario

Para analizar o escribir datos o cabeceras de cuerpo de mensaje que los analizadores suministrados no manejan, puede crear analizadores definidos por el usuario que utilicen la interfaz de programación de analizador definida por el usuario de IBM Integration Bus .

Consejo: No se proporciona ningún analizador para mensajes, o partes de mensajes, en el formato WMQMQFMT_IMS_VAR_STRING. Los datos de este formato suelen ir precedidos de una cabecera MQIIH (formatoMQFMT_IMS). IBM Integration Bus trata estos datos como un mensaje BLOB. Si cambia el CodedCharSetId o la codificación de dicho mensaje en un flujo de mensajes, elMQFMT_IMS_VAR_STRINGlos datos no se convierten y el descriptor de mensaje o la cabecera anterior no describen correctamente esa parte del mensaje. Si necesita que los datos de estos mensajes se conviertan, utilice el dominio MRM y cree un conjunto de mensajes para crear un modelo del contenido del mensaje o proporcione un analizador definido por el usuario.

Analizadores raíz

Un analizador raíz es el primer analizador de la estructura de árbol lógico creada por el nodo de integración. El analizador raíz está definido por el nodo de entrada que está utilizando en el flujo de mensajes, por ejemplo, el nodoSOAPInput utiliza un analizador raíz distinto para el nodo MQInput . Cada analizador raíz crea analizadores de propiedades diferentes para trabajar con la carpeta de propiedades del árbol lógico, ya que nodos de entrada diferentes necesitan obtener y serializar estos valores en formas específicas de transporte. Un analizador raíz asignado a árboles diferentes puede provocar un comportamiento diferente cuando se copian elementos entre árboles. El analizador raíz de WebSphere MQ se utiliza al crear árboles nuevos en ESQL.

Copias de analizador

Al copiar un árbol entre un analizador y otro, por ejemplo como resultado de utilizar ESQL, el comportamiento es diferente en función de los tipos de los analizadores implicados.

Copias de analizadores iguales

Al copiar un árbol entre dos analizadores que son iguales, por ejemplo en ESQL:
SET OutputRoot.XMLNSC.myTesData.Data = InputRoot.XMLNSC.myInputData.myDarta
Se realiza una "Copia de analizadores iguales". En este caso, el nodo de integración puede estar seguro de que el analizador de destino puede representar plenamente el árbol y, por tanto, se copiará toda la información del analizador. El analizador de destino tiene una copia idéntica del árbol que se toma del analizador de origen. Toda la estructura del analizador bajo este elemento se conserva y todos los atributos del mensaje se siguen representando como atributos en el árbol de destino.

Copias de analizadores diferentes

Al copiar un árbol entre dos analizadores diferentes, por ejemplo en ESQL:
SET OutputRoot.DFDL.Data.Account = InputRoot.XMLNSC.Data.Account
En esta caso, el nodo de integración no puede saber si el analizador de destino puede representar plenamente el árbol de origen. Este comportamiento se debe a que no todos los analizadores dan soporte al mismo tipo de estructura e información de contenido. En este caso, en lugar de crear una copia del árbol de origen, el nodo de integración debe navegar hasta la estructura lógica, creando los elementos mediante el analizador de destino. Por tanto, la estructura del analizador no se conserva, y es posible que los elementos que eran atributos en el origen no sean atributos en el árbol de destino. Después de una copia de analizadores diferentes, el árbol de destino consta sólo de pares de Nombre-Valor bajo el analizador de destino sin ninguna otra información de analizador.

Tenga en cuenta que los analizadores que eran hijos del elemento raíz del árbol de origen que se copian no se conservan en el árbol de salida. Al serializar, debe asegurarse de que los árboles creados desde copias de analizadores diferentes se construyan de modo que un analizador de cuerpo pueda serializar el mensaje de salida.