Planejando Nós de Processamento de Mensagem Definidos pelo Usuário

Planejar como gravar seu nó de processamento de mensagens ou nó de saída, e como navegar pela mensagem no nó.

Fatores de Design

Antes de desenvolver e implementar seu nó de processamento de mensagem, considere os seguintes pontos:

Navegação de Elementos de Sintaxe

O intermediário fornece funções que o seu nó pode chamar para atravessar a representação em árvore da mensagem, bem como as funções e os métodos que suportam navegação a partir do elemento atual para outros elementos:
  • Pai
  • Primeiro filho
  • Último filho
  • Irmão anterior (ou esquerdo)
  • Próximo irmão (ou direito)
Esses relacionamentos são mostrados na figura a seguir.
A figura mostra um elemento da sintaxe.Ele é conectado a outros elementos. Os outros elementos são: irmão anterior e próximo irmão à esquerda e à direita do elemento, primeiro filho e último filho abaixo do elemento e pai, que está acima do elemento.

Outras funções e métodos suportam a manipulação dos próprios elementos, com funções e métodos para criar elementos, para configurar ou consultar seus valores, para inserir novos elementos na árvore e para remover elementos da árvore. Consulte Funções de Utilitários de Nó C e Funções de Utilitários do Analisador C, ou as informações do Javadoc para obter detalhes.

A próxima figura descreve uma árvore simples de elementos de sintaxe que mostra uma gama completa de interconexões entre os elementos.
A figura mostra uma árvore do elemento da sintaxe.O elemento A está na parte superior do diagrama, acima do elemento B, o qual por sua vez está acima dos elementos C, D e E, os quais estão no mesmo nível.

O elemento A é o elemento-raiz da árvore. Ele não tem pai porque é o raiz. Ele possui um primeiro filho do elemento B. Como A não possui outros filhos, o elemento B também será o último filho de A.

O elemento B tem três filhos: elementos C, D e E. O elemento C é o primeiro filho de B; o elemento E é o último filho de B.

O elemento C tem dois irmãos: elementos D e E. O próximo irmão do elemento C é o elemento D. O próximo irmão do elemento D é o elemento E. O irmão anterior do elemento E é o elemento D. O irmão anterior do elemento D é o elemento C.

A figura a seguir mostra a primeira geração dos elementos de sintaxe de uma mensagem típica do WebSphere MQ recebida por um intermediário. (Nem todas as mensagens têm um cabeçalho MQRFH2).
Na parte superior da figura está uma caixa denominada Root. Uma linha conecta a caixa a uma marcada como Propriedades abaixo e à esquerda, e outra linha a uma caixa marcada como XML abaixo e à direita. Entre essas duas estão mais duas caixas, marcadas como MQMD e MQRFH2.

Esses elementos na primeira geração são muitas vezes chamados pastas, nas quais os elementos de sintaxe que representam cabeçalhos de mensagem e dados de conteúdo de mensagem são armazenados. Neste exemplo, o primeiro filho de root é a pasta Propriedades. O próximo irmão de Propriedades é a pasta para o cabeçalho MQMD. O próximo irmão é a pasta para o cabeçalho MQRFH2. A última pasta representa o conteúdo da mensagem, a qual (neste exemplo) é uma mensagem XML.

A figura anterior inclui um cabeçalho MQMD e um MQRFH2. Todas as mensagens que são recebidas por um nó de processamento que manipula o WebSphere MQ incluem um cabeçalho MQMD; vários outros cabeçalhos também podem ser incluídos.

Navegando uma Mensagem XML

Considere a seguinte mensagem XML:
  <Business>
    <Product type='messaging'></Product>
    <Company>
      <Title>IBM</Title>
      <Location>Hursley</Location>
      <Department>WebSphere MQ</Department>
    </Company>
  </Business>
Neste exemplo, os elementos são dos seguintes tipos:
Elemento de nome
Business, Product, Company, Title, Location, Department
Elemento de valor
IBM, Hursley, WebSphere MQ
Elemento de nome/valor
type='messaging'

Utilize as funções e os métodos de utilitários do nó fornecidos (ou as funções de utilitário similares do analisador) para navegar por uma mensagem. Utilizando a mensagem XML mostrada, você precisa chamar cniRootElement primeiro, com a mensagem recebida pelo nó como entrada para essa função. Em Java, você precisa chamar getRootElement no objeto MbMessage de entrada. Essa chamada retorna um MbElement que representa a raiz do elemento. Não modifique esse elemento-raiz no nó definido pelo usuário.

A figura da primeira geração dos elementos da sintaxe de uma mensagem típica que é recebida pelo intermediário mostra que o último filho do elemento-raiz é a pasta que contém a árvore de análise XML. Navegue até essa pasta chamando cniLastChild (com a saída da chamada anterior como entrada para essa função) em um nó C, ou chamando o método getLastChild no elemento-raiz em um nó Java.

Apenas um elemento (<Business>) está no nível superior da mensagem, portanto chamar cniFirstChild (em C) ou getFirstChild (em Java) moverá para este ponto na árvore. Utilize cniElementType ou getType para obter seu tipo (que é name), seguido por cniElementName ou getName para retornar o próprio nome (Business).

O elemento <Business> tem dois filhos, <Product> e <Company>. Utilize cniFirstChild ou getFirstChild seguido de cniNextSibling ou getNextSibling para navegar para cada filho sucessivamente.

O elemento <Product> tem um atributo (type='messaging'), que é um elemento filho. Utilize cniFirstChild ou getFirstChild para navegar até este elemento, e cniElementType ou getType para retornar seu tipo (que é name-value). Utilize cniElementName ou getName para obter o nome. Para obter o valor, chame cniElementValueType para retornar o tipo, seguido pela função apropriada no grupo cniElementValue: neste exemplo, ele é cniElementCharacterValue. Em Java, utilize o método getValue, o qual retorna um objeto Java que representa o valor do elemento.

O elemento <Company> tem três filhos, cada um deles tendo um filho que é um elemento de valor (IBM, Hursley e WebSphere MQ). Utilize as funções já descritas para navegar até os elementos e acessar seus valores.

Outras funções estão disponíveis para copiar a árvore de elementos (ou parte dela). A cópia pode então ser modificada incluindo ou removendo elementos e alterando seus nomes e valores, para criar uma mensagem de saída.Consulte Funções de Utilitários de Nó C e Funções de Utilitários do Analisador C, ou a API Java do nó definido pelo usuário, para obter informações adicionais.

Referências relacionadas
Funções de Utilitários de Nó C
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

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

as01395_