Ao converter um mapa de mensagem a partir de uma versão anterior do WebSphere Message Broker em um mapa de dados gráficos, você pode precisar concluir tarefas extras para que possa usar seu mapa de dados gráficos em uma solução do sistema de mensagens.
A instalação do Editor de Mapeamento de Dados Gráficos possui um mecanismo de execução de tempo de execução dedicado, com foco no mapeamento de mensagens no código ESQL.
Os pontos a seguir devem ser considerados quando você estiver preparando para converter um mapa de mensagem em um mapa de dados gráficos:
O tempo de execução fornece um mecanismo de execução de tempo de execução baseado em Java dedicado para Mapas de dados gráficos. Como resultado, a execução de mapa se beneficia do suporte completo para otimização de XPath 2.0 e Java JIT e oferece maior confiabilidade.
Um submapa de dados gráficos pode ser chamado somente a partir de um mapa de dados gráficos de nível superior em um nó Mapeamento.
Embora uma instrução ESQL 'CALL' possa ser utilizada em um nó ESQL Compute para chamar um mapa do submapa de mensagens, esta função não é suportada para mapas de dados gráficos. Se você converter um mapa de mensagem que é utilizado dessa maneira, a instrução ESQL 'CALL' falhará e relatará que uma função não pode ser resolvida. A solução é substituir o nó Compute por um novo nó Mapeamento que possui um novo Mapa de dados gráficos que pode chamar o submapa convertido.
No ESQL, um valor NULL especial é definido e é distinto de vazio. Ao designar NULL a um elemento nomeado ou configurar o elemento a partir do valor NULL retornado de uma função ESQL chamada, você excluirá o elemento da árvore.
Em um mapa de dados gráficos, o ESQL NULL produz um elemento vazio ou um elemento vazio com o atributo xsi:nil configurado quando o elemento for definido como anulável no modelo. Consequentemente, em alguns casos, a saída do mapa de dados gráficos pode incluir elementos vazios inesperados que podem causar problemas de processamento, incluindo violações da validação do esquema XML. Esses problemas geralmente ocorrem quando uma função definida pelo usuário ESQL que retorna ESQL NULL em determinadas condições é chamada. Para evitar esses problemas, inclua uma condição na Transformação customizada para impedir que ela seja chamada se retornar NULL.
O formulário simples TRIM-AMBOS ( origem ) é convertido.
Esta seção descreve como implementar algumas tarefas de transformação que o editor de mapeamento de mensagens anterior implementou com diferentes construções. Esta lista não é exaustiva, mas pode ser um auxílio quando estiver considerando conceitos e desenvolvimento de mapas de dados gráficos.
Use Designar transformação para configurar valores literais em elementos de saída. Designar transformação utiliza uma representação em sequência, que é designada ao elemento de saída relevante e, portanto, deve ser formatada de acordo com seu tipo. O valor da propriedade não precisa estar entre aspas, pois qualquer aspas seria transmitida como parte do valor de sequência. Para fornecer explicitamente um valor com tipo, use a transformação de cast xs:<type> sem conexão de entrada.
É possível construir expressões no editor de mapeamento de mensagens que implicaram em um cast de tipo e utilizaram a representação de valor de sequência subjacente. O Editor de Mapeamento de Dados Gráficos utiliza a sintaxe de expressão XPath e impinge a criação estrita de tipo. Por exemplo, testar um elemento de tipo booleano para o valor literal de sequência “true” causaria uma exceção de tipo.
Mapas de mensagens fornecem funções, semelhantes às funções XPath, que são implementadas no tempo de execução por funções ESQL equivalentes. Algumas dessas funções ESQL possuem um tipo de valor mais flexível que é definido na especificação de XPath da função. O Mapeador de dados gráficos fornece funções XPath de acordo. Como resultado, um mapa de dados gráficos criado a partir de um mapa de mensagem convertido pode falhar no tempo de execução por causa de valores inválidos ou problemas de cast de tipo. Particularmente, as funções ESQL equivalentes podem fornecer um valor padrão quando o valor de parâmetro estiver vazio. Para resolver esses problemas, inclua condições para evitar que valores que são inválidos para os parâmetros da função Xpath sejam transmitidos para a função.
Mapas de mensagens não requerem que o usuário seja explícito ao acessar valores de texto de conteúdo combinado a partir de um elemento de tipo complexo em uma expressão de condição. O Mapeador de dados gráficos é baseado na sintaxe XPath padrão e requer a utilização explícita de "/text()" para indicar que o valor de texto de conteúdo combinado precisa ser utilizado. Como resultado, um mapa de mensagem convertido com uma expressão condicional que fez referência aos valores de texto de conteúdo combinado poderá falhar até que a expressão de caminho seja estendida para incluir o "/text()" ausente.
O editor de mapas de mensagens não validou corretamente o tipo de entradas do submapa. Os usuários poderiam editar o valor do caminho de elemento normal de uma entrada de submapa e, em vez disso, fornecer um valor literal sem tipo. A validação do Mapeador de dados gráficos exige que todas as entradas do submapa estejam conectadas a um elemento de entrada com tipo apropriado.
Algumas transformações requerem o uso do valor do contador "For each index". O mapa de mensagem Versão 6.1 e Versão 7.0 forneceu a função msgmap:occurrence para obter a contagem atual de loops. O Mapeador de dados gráficos fornece uma variável do contador For loop, que pode ser utilizada para fornecer função equivalente. O nome dessa variável tem formato fixo $<For each primary input element name>-index e pode ser obtido utilizando o assistente de conteúdo ctrl-space no painel "ForEach transform" Expressão de propriedades de filtro ou no assistente de conteúdo em qualquer transformação aninhada.