Modificar el formato del mensaje

Utilice el nodo Compute para copiar parte de un mensaje de entrada en un mensaje de salida. Los resultados de una copia de este tipo dependen del tipo de analizadores de entrada y salida implicados.

Analizadores de igual

Cuando los mensajes de origen y destino tienen la misma estructura de carpeta a nivel de raíz, se realiza una copia de analizador igual. Por ejemplo:

SET OutputRoot.MQMD = InputRoot.MQMD;

Esta sentencia copia todos los hijos de la carpeta MQMD del mensaje de entrada en la carpeta MQMD del mensaje de salida.

Otro ejemplo de estructura de árbol que soporta una copia de analizador igual es:

SET OutputRoot.XMLNS.Data.Account = InputRoot.XMLNS.Customer.Bank.Data;

Para transformar un mensaje de entrada del dominio MRM en un mensaje de salida que también esté en el dominio MRM, puede utilizar el nodo Compute o el nodo Mapping. El nodo Mapping puede interpretar la acción que se requiere debido a que conoce el formato de ambos mensajes. La ayuda de contenido del módulo ESQL para el nodo Compute, también puede usar las definiciones de mensajes para estos mensajes. Si los mensajes no están en el mismo espacio de nombres, deberá utilizar el nodo Compute.

Para utilizar el Asistente de contenido con referencias de mensaje, debe configurar una referencia de proyecto desde el proyecto que contiene el ESQL al proyecto que contiene el conjunto de mensajes. Para obtener información sobre cómo configurar una referencia de proyecto, consulte el apartado Referencias de proyecto.

Si ambos mensajes de entrada y de salida no están en el dominio MRM, debe utilizar el nodo Compute y especificar la estructura de los mensajes personalmente.

Analizadores distintos

Cuando los mensajes de origen y de destino tienen distintas estructuras de carpeta a nivel de raíz, no se puede efectuar una copia exacta del origen del mensaje. En vez de esto, la copia de analizador distinto ve el mensaje de origen como un conjunto de carpetas anidadas terminadas por una pareja nombre-valor final. Por ejemplo, copiando el siguiente mensaje de XML a MRM:

<Name3><Name31>Value31</Name31>Value32</Name3>

produce un elemento de nombre Name3, y un elemento nombre-valor llamado Name31 con el valor Value31. El segundo pcdata XML (Value32) no puede representarse y se descarta.

La copia de analizador distinta explora el árbol de origen y copia carpetas, conocidas también como elementos de nombres, y pares de nombre-valor finales. Todo lo demás, incluidos los elementos indicados como especiales por el analizador de origen, no se copia.

Un ejemplo de una estructura de árbol que produce una copia de analizador distinto es:

SET OutputRoot.MRM.Data.Account = InputRoot.XMLNS.Data.Account;

Si el algoritmo usado para realizar una copia de analizador distinto no es adecuado para la estructura de árbol, debe calificar posteriormente el campo de origen para limitar la cantidad de árbol que se copia.

Tenga cuidado al copiar información de mensajes de entrada en mensajes de salida de dominios distintos. Se puede codificar ESQL que cree una estructura o contenido de mensajes que no sea totalmente coherente con las normas del analizador que procesa el mensaje de salida. Esta acción puede hacer que no se cree un mensaje de salida o que se cree con un contenido inesperado. Si cree que el mensaje de salida generado por un flujo de mensajes determinado no tiene el contenido correcto o el formato correcto, compruebe el ESQL que crea el mensaje de salida y busque posibles discrepancias en la estructura, tipos de campos y valores de campos.

Al copiar árboles entre analizadores diferentes, debe establecer el formato del mensaje del analizador de destino. Por ejemplo, si se ha definido un conjunto de mensajes con los formatos XMLNS y CWF, se necesitan los mandatos siguientes para copiar una corriente de datos XMLNS de entrada en el analizador MRM y establecer el último para que se genere en formato CWF:
-- Copiar el mensaje en la salida, moviendo de los dominios XMLNS a MRM
SET OutputRoot.MRM = InputRoot.XMLNS.rootElement;
		
-- Establecer el formato CWF para salida mediante el dominio MRM
SET OutputRoot.Properties.MessageType = '<MessageTypeName>';
SET OutputRoot.Properties.MessageSet = '<MessageSetName>';
SET OutputRoot.Properties.MessageFormat = 'CWF';	
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:53:51

ac11610_