As informações neste tópico se aplicam a nós de saída e a nós de processamento de mensagem. Esses dois tipos de nó podem ser considerados em conjunto porque, embora um nó de processamento de mensagem seja utilizado tipicamente para processar uma mensagem e um nó de saída seja utilizado para fornecer uma saída na forma de um fluxo de bits de uma mensagem, qualquer dos tipos de nó pode ser utilizado para executar qualquer dessas funções.
Durante a fase de instanciação, uma instância de um nó de processamento de mensagem definido pelo usuário é criada. A fase começa quando o intermediário recebe a tabela de ponteiros de função e chama a função cniCreateNodeContext para cada instanciação do nó definido pelo usuário. A função cniCreateNodeContext é chamada para cada fluxo de mensagens que está utilizando o nó de processamento de mensagem definido pelo usuário.Essa função deve alocar memória para essa instanciação do nó definido pelo usuário para conter os valores dos atributos configurados.
Em cniCreateContext, o intermediário chama as duas funções cniCreateInputTerminal e cniCreateOutputTerminal para estabelecer quais terminais de entrada e de saída o nó de processamento de mensagem possui.
Um nó de processamento de mensagem definido pelo usuário é registrado com o intermediário quando a LIL contendo o nó tiver sido carregada e inicializada pelo sistema operacional.
O intermediário chama bipGetMessageflowNodeFactory para estabelecer a função da LIL e como ela deve ser chamada.
A função bipGetMessageflowNodeFactory por sua vez chama a função cniCreateNodeFactory, a qual retorna um nome de fábrica ou de grupo para todos os nós suportados pela LIL.
A LIL deve em seguida chamar a função utilitária cniDefineNodeClass para transmitir o nome de cada nó e uma tabela de funções virtuais dos endereços das funções de implementação.
Durante a fase de processamento do ciclo de vida de um nó de processamento de mensagem definido pelo usuário a mensagem é transformada de alguma forma, quando alguma operação de processamento ocorre na mensagem de entrada.
Quando o intermediário recupera uma mensagem da fila e essa mensagem chega no terminal de entrada do nó definido pelo usuário, o intermediário chama a função de implementação cniEvaluate. Essa função é utilizada para decidir o que fazer com a mensagem.
É possível utilizar uma gama de funções utilitárias de nó no nó de processamento de mensagem definido pelo usuário para executar uma variedade de funções de processamento de mensagem, tais como, acessar os dados da mensagem, acessar ESQL, transformar um objeto de mensagem e propagar uma mensagem. Você deve incluir as funções utilitárias de nó que irá utilizar para processar a mensagem na função cniEvaluate.
Essa interface não gera automaticamente uma subárvore de propriedades para uma mensagem. Não é um requisito para uma mensagem ter uma subárvore de propriedades, embora você possa achar útil criar uma para fornecer uma estrutura de árvore de mensagem consistente independentemente do nó de entrada. Se você quiser que uma subárvore de propriedades seja criada em uma mensagem, e também estiver utilizando um nó de entrada definido pelo usuário, deverá fazer isso você mesmo.
Quando um nó de processamento de mensagem definido pelo usuário tiver processado uma mensagem você deverá assegurar que ele seja destruído, para liberar quaisquer recursos do sistema que ele utilizou, e para liberar quaisquer áreas de dados específicas à instância do nó, como o contexto, que foram adquiridas quando a mensagem foi construída ou processada.
Uma instância de um nó de processamento de mensagem definido pelo usuário é destruído quando o intermediário chama a função cniDeleteNodeContext. O intermediário chama cniDeleteNodeContext quando
A fase de registro ocorre quando um nó de processamento de mensagem definido pelo usuário escrito em Java se torna conhecido para o intermediário ou se registra com este.
Sempre que um intermediário inicia, ele carrega todas as lils e classes java relevantes. Para assegurar que um nó de processamento de mensagem seja registrado com o intermediário, você deve fornecer ao intermediário uma classe que implemente a interface MbNodeInterface e esteja contida no caminho de classe do intermediário.
Um nó de processamento de mensagem Java definido pelo usuário é instanciado quando um intermediário implementa um fluxo de mensagens contendo o nó de processamento de mensagem definido pelo usuário. Quando o nó é instanciado, o construtor da classe de nó de processamento de mensagem é chamado.
Quando um nó é instanciado, quaisquer terminais que tenham sido especificados utilizando os métodos relevantes são criados. Um nó de processamento de mensagem pode ter qualquer número de terminais de entrada e de saída associados a ele. Você deve incluir os métodos createInputTerminal e createOutputTerminal no construtor do nó para declarar esses terminais.
Os terminais de saída incluem terminais out, failure e catch. Utilize a classe createOutputTerminal dentro do construtor da classe do nó para criar tantos terminais de saída quantos forem necessários.
Como um mínimo, somente é preciso criar esses terminais de saída utilizando a classe do construtor. Contudo, se precisar inicializar valores de atributos, você deve incluir também esse código neste ponto no nó de processamento de mensagem.
Se desejar tratar exceções que sejam transmitidas de volta a seu nó de processamento de mensagem, é recomendável fazer isso criando um terminal de falha para o nó de processamento de mensagem definido pelo usuário, utilizando o método createOutputTerminal. É sensato utilizar o terminal de falha para esse processo porque é para ele que o propaga os erros.
Você deve certificar-se de que quaisquer exceções capturadas pelo nó de processamento de mensagem sejam tratadas corretamente. Se você não incluir um terminal de falha, o nó de processamento de mensagem não tentará tratar a exceção. Se o fluxo de mensagens não contiver nenhum método de tratamento de exceção, quaisquer exceções lançadas serão transmitidas de volta ao nó de entrada, onde elas serão tratadas.
Se você capturar exceções, deverá certificar-se de que você lance novamente quaisquer delas que o nó de processamento de mensagem não puder tratar ele próprio, para que a exceção seja transmitida ao nó de entrada para tratamento, por exemplo, para retrocesso de uma transação.
Durante a fase de processamento do ciclo de vida de um nó de processamento de mensagem definido pelo usuário, o nó de processamento de mensagem toma a hierarquia lógica da mensagem e a processa de alguma forma.
Um nó de processamento de mensagem Java definido pelo usuário é destruído quando o nó é excluído ou o intermediário é encerrado. Você não necessita incluir algo em seu código que especifique que o nó deve ser excluído fisicamente, porque isso pode ser tratado pelo coletor de lixo.
Contudo, se quiser ser notificado de que um nó está prestes a ser excluído, você pode utilizar o método onDelete. Você pode querer fazer isso se existirem recursos além dos que serão coletados como lixo que você deseje excluir. Por exemplo, se você tiver aberto um soquete, este não será, novamente, fechado corretamente quando o nó for excluído automaticamente. Você pode incluir essa instrução no método onDelete para assegurar que o soquete seja fechado corretamente.
Conceitos relacionados
Nós do Fluxo de Mensagens
Nós de Processamento de Mensagem Definidos pelo Usuário
Planejando Nós de Processamento de Mensagem Definidos pelo Usuário
Tarefas relacionadas
Criando um Nó de Processamento de Mensagem em C
Criando um Nó de Processamento de Mensagem ou de Saída em Java
Referências relacionadas
cniCreateInputTerminal
cniCreateNodeFactory
cniDeleteNodeContext
cniDefineNodeClass
cniEvaluate
Avisos |
Marcas |
Downloads |
Biblioteca |
Suporte |
Feedback
![]() ![]() |
as01394_ |