La información de este tema se aplica a los nodos de salida y a los nodos de proceso de mensajes. Estos dos tipos de nodos se pueden considerar juntos porque aunque un nodo de proceso de mensajes se utiliza generalmente para procesar un mensaje y un nodo de salida se utiliza para proporcionar una salida, con formato de corriente de bits, puede utilizar cualquiera de estos dos tipos de nodos para realizar cualquiera de estas funciones.
Un nodo de proceso de mensajes definido por el usuario se registra con el intermediario cuando el sistema operativo carga e inicializa el LIL que contiene el nodo.
El intermediario llama a bipGetMessageflowNodeFactory para establecer la función del LIL y cómo debe llamarse a la misma.
La función bipGetMessageflowNodeFactory a su vez llama a la función cniCreateNodeFactory, la cual devuelve un nombre de fábrica o de grupo para todos los nodos a los que da soporte el LIL.
A continuación, el LIL debe llamar a la función del programa de utilidad cniDefineNodeClass para pasar el nombre de cada nodo y una tabla de funciones virtuales de los punteros de función, de las funciones implementadas.
Durante la fase de creación de instancias, se crea una instancia de un nodo de proceso de mensajes definido por el usuario. La fase comienza cuando el intermediario crea un flujo de mensajes y llama a la función cniCreateNodeContext para cada creación de una instancia del nodo definido por el usuario en ese flujo de mensajes. La función cniCreateNodeContext es la que se ha especificado en el campo iFpCreateNodeContext de la estructura CNI_VFT que se ha pasado a cniDefineNodeClass para ese tipo de nodo. Esta función debe asignar los recursos requeridos para ese nodo, incluida la memoria suficiente para que la creación de instancia del nodo definido por el usuario pueda contener los valores de los atributos configurados.
En cniCreateContext, la extensión definida por el usuario llama a las dos funciones cniCreateInputTerminal y cniCreateOutputTerminal para establecer qué terminales de entrada y de salida tiene el nodo de proceso de mensajes.
Durante la fase de proceso del ciclo de vida de un nodo de proceso de mensajes definido por el usuario, el mensaje se transforma de algún modo cuando se lleva a cabo algún tipo de proceso en el mensaje de entrada.
Cuando el intermediario recupera un mensaje de la cola y dicho mensaje llega al terminal de entrada del nodo definido por el usuario, el intermediario llama a la función de implementación cniEvaluate. Esta función se utiliza para decidir lo que se hace con el mensaje.
En el nodo de proceso de mensajes definido por el usuario puede utilizar un rango de funciones del programa de utilidad del nodo como, por ejemplo, acceder a los datos del mensaje, acceder a ESQL, transformar un objeto de mensajes y propagar un mensaje. Debe incluir las funciones del programa de utilidad del nodo que va a utilizar para procesar el mensaje dentro de la función cniEvaluate.
Esta interfaz no genera automáticamente un subárbol de propiedades para un mensaje. No es un requisito que un mensaje tenga un subárbol de propiedades, aunque puede resultarle útil crear uno que proporcione una subestructura de árbol de mensaje independientemente del nodo de entrada. Si desea que se cree un subárbol de propiedades en un mensaje y además está utilizando un nodo de entrada definido por el usuario, deberá hacerlo usted mismo.
Cuando un nodo de proceso de mensajes definido por el usuario ha procesado un mensaje, debe asegurarse de que se ha destruido para liberar cualquier recurso del sistema que se utilice y para liberar las áreas de datos específicas a la instancia del nodo como, por ejemplo, el contexto, que se han adquirido cuando se ha creado o procesado el mensaje.
Se destruye una instancia de un nodo de proceso de mensajes definido por el usuario cuando el intermediario llama a la función cniDeleteNodeContext.