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;

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.XML.Data.Account = InputRoot.XML.Customer.Bank.Data;
Si desea 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 los dos 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.
Nota: Para que el Asistente de contenido funcione 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 ni el mensaje de entrada ni el de salida están en el dominio MRM, deberá 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 estructura de árbol que produce una copia de analizador distinto es:

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

Si el algoritmo usado para realizar una copia de analizador distinto no es adecuado para la estructura de árbol, es posible que necesite 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 va a procesar el mensaje de salida. A consecuencia de esto, es posible que un mensaje de salida no se cree o 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, es posible que también desee establecer el formato de mensaje del analizador de destino. Por ejemplo, si se ha definido un conjunto de mensajes con los formatos XML y CWF, se necesitan los mandatos siguientes para copiar una corriente de datos XML de entrada en el analizador MRM y establecer el último en salida en formato CWF:
-- Copie el mensaje en la salida, moviendo de los dominios XML a MRM
SET OutputRoot.MRM = InputRoot.XML;
		
-- 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, 2006 Última actualización: 22/08/2006
ac11610_