WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Ciclo de Vida do Analisador Definido pelo Usuário

Existem diversos estágios na vida útil de um analisador de fluxo de mensagens definido pelo usuário.

Estes estágios estão envolvidos:

Este tópico descreve as interações que ocorrem entre os componentes do WebSphere Message Broker quando você executa uma analisador definido pelo usuário. Explica cada estágio em termos dos eventos que iniciam cada estágio e os eventos que ocorrem durante e após cada estágio, e as APIs que são chamadas. Entender os conceitos deste tópico ajuda a projetar e desenvolver seu analisador de forma mais efetiva.

Registro

A primeira fase no ciclo de vida do analisador definido pelo usuário é a fase de registro. A finalidade da fase de registro é registrar o analisador definido pelo usuário com o intermediário. Essa fase se inicia quando um grupo de exceções é iniciado.

Instanciação

O analisador é criado durante a fase de instanciação do ciclo de vida do analisador. Quando uma mensagem de entrada é recebida ou uma mensagem de saída é construída em um nó Compute, o analisador relevante é identificado e os requisitos do analisador são obtidos do cabeçalho de mensagem, como o MQMD. O intermediário inicia e carrega o LIL (Loadable Implementation Library) e o gerado de analisador. Antes de a função cpiCreateContext ser chamada, o intermediário ria um elemento de nome como o elemento raiz efetivo para o analisador. Entretanto, esse elemento não é nomeado. O analisador deve nomear esse elemento na função cpiSetElementName. O processo do grupo de execução cria uma instância do analisador e o intermediário faz uma chamada a cpiCreateContext para permitir que o objeto do analisador adquira a seção apropriada da mensagem.

O intermediário faz em seguida uma chamada a cpiParseBuffer. cpiParseBuffer executa qualquer inicialização necessária e retorna o comprimento do conteúdo da mensagem do qual o analisador está assumindo propriedade. O analisador avalia quanto dos dados da mensagem deve analisar e pede o número apropriado de bytes.

Sempre que uma instância de um objeto do analisador definido pelo usuário é criada, a função de implementação de criação de contexto cpiCreateContext também é chamada pelo intermediário. Essa chamada permite ao analisador alocar dados da instância associados ao analisador. Uma função cpiDeleteContext para excluir o contexto do objeto do analisador também é necessária.

Processamento

Durante a fase de processamento, o analisador manipula, altera e faz referência a elementos no objeto de mensagem. A fase de processamento do fluxo de mensagens começa quando ocorre alguma atividade de processamento de mensagem, como a navegação, que exija acesso a um elemento em uma mensagem que não exista na representação do modelo interna do intermediário da mensagem envolvida.

Durante a fase de processamento do fluxo de mensagens, o analisador é chamado em resposta a tentativas de navegar para a árvore de mensagens. O analisador examina o buffer alocado quando cpiParseBuffer foi chamado e cria quaisquer elementos de mensagem necessários.

O analisador pode, em seguida, navegar através dos elementos da mensagem, utilizando qualquer das seguintes funções de implementação do analisador, ou todas elas:
  • cpiParseFirstChild
  • cpiParseLastChild
  • cpiParsePreviousSibling
  • cpiParseNextSibling

Essas funções são chamadas quando qualquer forma de navegação é feita (como uma expressão de filtro que especifique um campo da mensagem) para a parte da árvore de elementos de sintaxe que representa logicamente os dados para um formato de mensagem suportado por um analisador definido pelo usuário. Essa navegação ocorre quando uma operação no intermediário exige que uma árvore de elementos de sintaxe seja construída ou estendida.

Considere os seguintes pontos ao decidir qual a melhor maneira de navegar pela árvore de elementos de sintaxe:
  • Um elemento de sintaxe tem cinco ponteiros para seus pais, irmãos e primeiro e último filhos, de forma que o conjunto finito de navegações esteja disponível.
  • As mesmas classes internas são utilizadas para executar todas essas navegações.
  • O analisador não controla a navegação. A ESQL ou um nó definido pelo usuário toma a decisão sobre em que direção navegar e a ordem na qual as funções de implementação de navegação do analisador serão chamadas. O analisador definido pelo usuário não tem nenhum controle da direção e da ordem e precisa responder corretamente ao esquema de navegação escolhido; por exemplo, analisando da direita para a esquerda, assim como da esquerda para a direita.
  • Ao gravar um analisador definido pelo usuário, coloque o código do analisador em uma função parseNextItem. Essa função deve construir a árvore de elementos de sintaxe um elemento por vez, definindo os nomes, valores e sinalizadores completos de forma apropriada. A maneira como você implementa essa função depende da natureza do fluxo de bits a ser analisado. O analisador de amostra fornecido demonstra esse comportamento.

Quando o analisador tiver terminado de analisar as partes relevantes da árvore de elementos de sintaxe, ele chamará cpiWriteBuffer. Essa função anexa sua parte da árvore de elementos da sintaxe ao fluxo de bits no buffer de mensagem que está associado ao objeto analisador e cria a mensagem de saída.

Destruição

A fase de Destruição é a fase final no ciclo de vida do analisador definido pelo usuário. Quando o analisador tiver gravado sua parte da árvore de elemento da sintaxe para o fluxo de bits e criado a mensagem de saída, os recursos do sistema que foram criados pelo intermediário para o analisador utilizar precisarão ser liberados.

A fase de destruição começa quando o comando mqsistop é utilizado para parar o processo de execução.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:30:19


Tópico de ConceitoTópico de Conceito | Versão 8.0.0.5 | as01413_