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.
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 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.
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.
-- 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';