Saiba como migrar mapas de mensagens da Versão 5.0.
O modelo de programação para mapas de mensagens é diferente entre a Versão 5.0 (na qual o formato de arquivo é .mfmap) e a Versão 6.0 (na qual o formato é .msgmap). Os mapas de mensagens da Versão 5.0 têm um modelo de programação processual, que é essencialmente um ESQL alternativo, no qual você descreve todas as etapas requeridas para executar uma transformação. A Versão 6.0 utiliza um modelo de programação declarativo, no qual você descreve o resultado da transformação e as ferramentas determinam como obter esse resultado.
A maioria das falhas de migração são resultantes de mapas de mensagens que contêm uma grande quantidade de informações sobre as etapas que desempenham a transformação e não contêm informações suficientes sobre o resultado necessário. Para estes mapas de mensagens, a migração é ativada alterando o arquivo .mfmap para que seções específicas de "instruções" são separadas em uma função ou procedimento ESQL que pode ser chamado pelo mapa de mensagens. O arquivo .mfmap chama a função ESQL em vez de contê-la como uma expressão. O comando mqsimigratemfmaps então migra o arquivo .mfmap, mas chama a função ESQL em vez de registrar um erro de migração.
src_msg.e[1] + src_msg.e[2]calcule o resultado em uma função ESQL, tal como:
CREATE FUNCTION addOneAndTwo(IN src_msg) BEGIN RETURN src_msg.e[1] + src_msg.e[2]; END;No arquivo .msgmap, chame a função ESQL addOneAndTwo utilizando o elemento-pai src_msg como um parâmetro.
src_msg.*ou
src_msg.*[]pode ser processada utilizando uma função que utiliza o pai do campo de repetição:
CREATE FUNCTION processAny(IN src_msg) BEGIN DECLARE nodeRef REFERENCE TO src_msg.e.*; DECLARE result <dataType> <initialValue>; WHILE LASTMOVE nodeRef DO -- colocar expressão aqui SET result = result; END WHILE; RETURN RESULT; END;No arquivo .msgmap, chame a função ESQL processAny utilizando o elemento-pai src_msg como um parâmetro.
src_msg.{'a' || 'b'}podem ser processadas por funções ESQL que processam o pai do campo de repetição:
CREATE FUNCTION processDynamicName(IN src_msg) BEGIN RETURN src_msg.{'a' || 'b'}; END;No arquivo .msgmap, chame a função ESQL processDynamicName utilizando o elemento-pai src_msg como um parâmetro.
SELECT MAX("#T".FIRSTNAME) FROM Database.CUSTOMER AS "#T" WHERE "#T".CUSTOMERID = custIdpodem ser processadas por funções ESQL que processam o pai do campo de repetição:
CREATE FUNCTION processMAX(IN custId) BEGIN RETURN SELECT MAX("#T".FIRSTNAME) FROM Database.CUSTOMER AS "#T" WHERE "#T".CUSTOMERID = custId END;No arquivo .msgmap, chame a função ESQL processMAX utilizando o elemento custId como um parâmetro.
e || "#I"devem ser totalmente regravados em ESQL. Por definição, deve haver um elemento pai de repetição complexo e isto não é suportado por funções ESQL.
src_msg.e[src_msg.a]devem ser regravadas utilizando linhas if, funções msgmap:occurrence() e funções ESQL:
for src_msg.e if condition msgmap:occurrence(src_msg/e) = src_msg/a
src_msg.e["#I" +5] src_msg.e[< 3]todo o arquivo .msgmap deve ser regravado em ESQL, porque os arquivos .msgmap não suportam acesso indexado a campos de repetição.
src_msg.e IN (1, 2, 3)devem ser regravados em ESQL, porque os arquivos .msgmap não suportam expressões ESQL ROW.
Para a Versão 6.0, é necessário definir estruturas de esquema reutilizáveis como elementos e tipos globais. Se você tiver os submapas da Versão 5.0 que utilizam elementos locais, você deverá alterar o esquema para incluir definições de elementos globais para os elementos locais e, em seguida, utilizar o novo esquema após a migração. Se os novos elementos globais tiverem o mesmo nome e tipo que os elementos locais, os submapas da Versão 5.0 não precisarão ser alterados.
É necessário qualificar um elemento local em um submapa da Versão 5.0 com um espaço de nomes para assegurar sua migração bem-sucedida para a Versão 6.0, porque o elemento global que o substitui após a migração deve ser qualificado pelo espaço de nomes. Se seu submapa contiver elementos locais, será necessário recriar o submapa e recriar a chamada para o submapa a partir do mapa de mensagens principal.
Versão | Recurso suportado |
---|---|
Versão 5.0 | elementos globais e atributos globais como origem do mapa |
elementos globais e atributos globais como destino do mapa | |
elementos locais e atributos locais como origem do mapa | |
elementos locais e atributos locais como destino do mapa | |
Versão 6.0 | elementos globais, atributos globais e tipos globais como origem de mapa |
elementos globais e atributos globais como destino do mapa |