Utilize o nó Compute para copiar parte de uma mensagem de entrada para uma mensagem de saída. Os resultados dessa cópia dependem do tipo de analisadores de entrada e de saída envolvidos.
Onde as mensagens de origem e de destino possuem a mesma estrutura de pasta no nível raiz, é executada uma cópia de analisadores semelhantes. Por exemplo:
SET OutputRoot.MQMD = InputRoot.MQMD;
Essa instrução copia todos os filhos da pasta MQMD da mensagem de entrada para a pasta MQMD da mensagem de saída.
Outro exemplo de uma estrutura de árvore que suporta uma cópia de analisadores iguais é:
SET OutputRoot.XMLNS.Data.Account = InputRoot.XMLNS.Customer.Bank.Data;
Para transformar uma mensagem de entrada no domínio MRM para uma mensagem de saída também no domínio MRM, é possível utilizar o nó Compute ou Mapeamento. O nó Mapeamento pode interpretar a ação que é necessária, pois conhece o formato de ambas mensagens. O Assistente de Conteúdo no módulo ESQL para o nó Compute também pode utilizar as definições de mensagens para essas mensagens. Se as mensagens não estiverem no mesmo espaço de nomes, você deve utilizar o nó Compute.
Para utilizar o Assistente de Conteúdo com referências de mensagens, você deve configurar uma referência de projeto do projeto que contém o ESQL para o projeto que contém o conjunto de mensagens. Para obter informações sobre a configuração de uma referência de projeto, consulte Incluindo e Removendo Referências da Biblioteca.
Se as mensagens de entrada e de saída não estiverem no domínio MRM, você deve utilizar o nó Compute e especificar a estrutura das mensagens.
Quando as mensagens de origem e destino possuírem estruturas de pastas diferentes no nível raiz, não será possível fazer uma cópia exata da origem da mensagem. Em vez disso, a cópia de analisadores diferentes exibe a mensagem de origem como um conjunto de pastas aninhadas finalizadas por um par de nome/valor de folha. Por exemplo, copiar a seguinte mensagem de XML para MRM:
<Name3><Name31>Value31</Name31>Value32</Name3>
produz um elemento de nome Name3 e um elemento de nome-valor denominado Name31 com o valor Value31. O segundo pcdata XML (Value32) não pode ser representado e é descartado.
A cópia de analisadores diferentes varre a árvore de origem e copia pastas, também conhecidas como elementos, e pares de nome/valor de folha. Todo o resto, incluindo elementos sinalizados como especiais pelo analisador de origem, não será copiado.
Um exemplo de uma estrutura em árvore que resulta em uma cópia de analisadores diferentes é:
SET OutputRoot.DFDL.Data.Account = InputRoot.XMLNSC.Data.Account;
Se o algoritmo usado para fazer uma cópia de analisadores diferentes não se adequar à sua estrutura em árvore, você deverá qualificar melhor o campo de origem para restringir a quantidade da árvore copiada.
Tenha cuidado ao copiar informações de mensagens de entrada para mensagens de saída em domínios diferentes. Você poderá codificar ESQL que cria uma estrutura de mensagem ou conteúdo que não é consistente com as regras do analisador que processa a mensagem de saída. Essa ação pode resultar em uma mensagem de saída não ser criada ou ser criada com conteúdo inesperado. Se você achar que a mensagem de saída gerada por um determinado fluxo de mensagens não contém o conteúdo correto ou possui um formato esperado, verifique o ESQL que cria a mensagem de saída e procure possíveis incompatibilidades de estrutura, tipos de campos, nomes de campos e valores de campos.
-- Copiar mensagem na saída, movendo de domínios XMLNSC para MRM
SET OutputRoot.MRM = InputRoot.XMLNSC.rootElement;
-- Configurar o formato CWF para saída pelo domínio MRM
SET OutputRoot.Properties.MessageType = '<MessageTypeName>';
SET OutputRoot.Properties.MessageSet = '<MessageSetName>';
SET OutputRoot.Properties.MessageFormat = 'CWF';