Ciclo de Vida do Analisador Definido pelo Usuário

Este tópico o orienta pelos vários estágios na existência de um analisador de fluxo de mensagens definido pelo usuário. Os estágios são os seguintes:

Este tópico o ajudará a entender as interações que ocorrem entre os componentes do WebSphere Message Broker quando se executa um analisador definido pelo usuário. Ele explica cada estágio em termos dos eventos que causam e ocorrem durante e após cada estágio, e as APIs que são chamadas. A compreensão dos conceitos neste tópico permitirá que você projete e desenvolva seu analisador com mais efetividade.

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. Esta fase é acionada pela fase de inicialização do processo do grupo de execução da inicialização.

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, tal como MQMD. O intermediário inicia e carrega a LIL (Loadable Implementation Library) e o depósito de informações do provedor do analisador. 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.

Antes que essa função seja chamada, o intermediário terá criado 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 intermediário faz em seguida uma chamada para cpiParseBuffer. A finalidade de cpiParseBuffer neste estágio é executar qualquer inicialização necessária e retornar o comprimento do conteúdo da mensagem da qual o analisador está assumindo a 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 de mensagens. Isso 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

A finalidade da fase de processamento é manipular, alterar e referenciar elementos em um objeto de mensagem que o analisador está interpretando. 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, tal 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. Isso ocorre quando uma operação no intermediário exige que uma árvore de elementos de sintaxe seja construída ou estendida.

Esteja ciente dos seguintes pontos ao decidir qual a melhor maneira de navegar a árvore de elementos de sintaxe:
  • Um elemento de sintaxe tem cinco ponteiros para seus pais, irmãos e primeiro e último filhos. Isso significa que você tem disponível um conjunto finito de navegações.
  • 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 possui controle sobre isso e precisa responder corretamente ao esquema de navegação escolhido. Isso pode significar, analisar da direita para a esquerda, bem como da esquerda para a direita, por exemplo.
  • Ao gravar um analisador definido pelo usuário, espera-se que o código real do analisador seja colocado 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 com o WebSphere Message Broker demonstra isso.

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. Isso 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.

Tarefas relacionadas
Criando um Analisador em C
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
as01413_