Restrições na Migração de Mapeamentos de Mensagens

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.

Uma limitação é que a ESQL (o tempo de execução para os arquivos .mfmap e .msgmap) não pode definir funções que retornam valores do elemento complexo (ou REFERENCE). O procedimento a seguir explica como resolver esta limitação de destino do elemento complexo; em muitos casos, é necessário regravar o mapa como uma função ESQL. Para obter exemplos e informações adicionais sobre como chamar ESQL a partir de mapas, consulte a seguinte amostra: Você pode visualizar amostras apenas quando utilizar o centro de informações integrado ao Message Brokers Toolkit.
  1. Determine se pode definir uma função ESQL para o arquivo .mfmap.
    1. Quando o valor de destino for um elemento complexo ou, em termos de ESQL uma REFERENCE, o mapeamento individual deverá ser regravado no arquivo .msgmap. Exclua o mapeamento do arquivo .mfmap e prossiga para a Etapa 4.
    2. Utilize uma função para todos os demais casos: cadeia CHAR, números, data e hora. Prossiga para a Etapa 2.
  2. Determine os parâmetros de origem e tipo de retornos para sua função.
    1. Para cada caminho de origem no mapeamento, deve haver um parâmetro na função ou procedimento. Para uma função, todos os parâmetros são inalteráveis. O tipo do parâmetro deve corresponder ao tipo de dados de origem.
    2. O tipo de retorno da função é o tipo de dados ESQL identificado anteriormente.
  3. Atualize o arquivo .mfmap para ativar a migração. Altere o arquivo .mfmap para chamar a função no mapeamento, transmitindo os parâmetros de origem para a função na ordem em que estão listados na etapa 2a.
  4. Execute novamente o comando mqsimigratemfmaps para migrar o arquivo .mfmap modificado.
  5. Repita as Etapas 1 a 4 até que nenhum erro seja relatado no log de migração.
  6. Inicie o Message Brokers Toolkit Versão 6.0 e abra o arquivo .msgmap migrado.
    1. Para ESQL migrado como funções, não deve haver nenhum erro.
    2. Para destinos de elementos complexos, regrave o mapeamento utilizando recursos da Versão 6.0.
Os exemplos a seguir ilustram a migração de arquivos .mfmap para arquivos .msgmap.
  • Para migrar uma referência múltipla a uma expressão de origem de repetiçã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.

  • Uma expressão que não utiliza nomes de elementos:
    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.

  • Expressões que calculam dinamicamente nomes de elementos:
    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.

  • Expressões que utilizam as funções select MIN, MAX e COUNT:
    SELECT MAX("#T".FIRSTNAME)  		
    	FROM Database.CUSTOMER AS "#T"  		
    	WHERE "#T".CUSTOMERID = custId  
    podem 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.

  • Arquivos .mfmap que utilizam variáveis de índice mfmap em expressões:
    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.

  • Expressões que utilizam expressões de origem para calcular valores:
    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 

  • Para expressões que utilizam expressões de índice para calcular valores:
    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.

  • Arquivos .mfmap que utilizam expressões ROW para calcular valores:
    src_msg.e IN (1, 2, 3)  
    devem ser regravados em ESQL, porque os arquivos .msgmap não suportam expressões ESQL ROW.

Restrições na Migração de Submapas

Em mapas de mensagens da Versão 5.0, qualquer tipo de elemento complexo pode ser a raiz de um submapa. No entanto, em Versão 6.0, apenas um elemento global ou um atributo global pode ser a raiz de um submapa. Quando um mapa de mensagens da Versão 5.0 com uma chamada para um submapa com um elemento não global como a raiz do mapa é migrado, o submapa não é migrado como um submapa independente. Em vez disso, a chamada para o submapa no mapa de mensagem principal é substituído pelo conteúdo migrado do submapa. Como alternativa, se o submapa tiver um elemento global como a raiz do mapa, o submapa será migrado para um submapa da Versão 6.0 independente.

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.

A tabela a seguir mostra as diferenças entre os recursos que são suportados em um submapa para a Versão 5.0 e a Versão 6.0.
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
Tarefas relacionadas
Desenvolvendo ESQL
Referências relacionadas
Migrando Mapeamentos de Mensagens da Versão 5.0
Comando mqsimigratemfmaps
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última atualização : 2009-02-13 16:13:04

ar25255_