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ós podem ser considerados juntos, porque embora um nó de processamento de mensagens seja utilizado tipicamente para processar uma mensagem e um nó output seja utilizado para fornecer uma saída no formato de um fluxo de bits, você pode utilizar o tipo de nó para executar uma dessas funções.
Um nó de processamento de mensagem definido pelo usuário é registrado com o intermediário quando a LIL que contém o nó tiver sido carregada e inicializada pelo sistema operacional.
O servidor 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 depósito de informações do provedor 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 ponteiros de funções das funções de implementação.
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 cria um fluxo de mensagens e chama a função cniCreateNodeContext para cada instanciação do nó definido pelo usuário neste fluxo de mensagens. A função cniCreateNodeContext é aquela especificada no campo iFpCreateNodeContext da estrutura CNI_VFT transmitida para cniDefineNodeClass para esse tipo de nó. Essa função deve alocar os recursos requeridos para esse nó, incluindo a memória para essa instanciação do nó definido pelo usuário para conter os valores dos atributos configurados.
Em cniCreateContext, a extensão definida pelo usuá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.
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 de utilitários 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ó input. Se você quiser que uma subárvore de propriedades seja criada em uma mensagem, e também estiver utilizando um nó input 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.