Le informazioni contenute in questo argomento sono valide sia per i nodi di output che per i nodi di elaborazione dei messaggi. Entrambi questi tipi di nodi possono essere considerati insieme in quanto, sebbene il nodo di elaborazione dei messaggi venga usato di solito per elaborare un messaggio e quello di output per fornire un output nella forma di un flusso di bit, per eseguire tali funzioni è possibile utilizzare sia l'uno che l'altro.
Un nodo di elaborazione dei messaggi definito dall'utente viene registrato con il broker quando la LIL che contiene il nodo viene caricata ed inizializzata dal sistema operativo.
Il broker richiama bipGetMessageflowNodeFactory per stabilire la funzione della LIL e la modalità secondo cui questa deve essere richiamata.
La funzione bipGetMessageflowNodeFactory richiama a sua volta la funzione cniCreateNodeFactory che restituisce un nome di gruppo o produttore per tutti i nodi supportati dalla LIL in uso.
La LIL deve quindi richiamare la funzione di utilità cniDefineNodeClass per trasferire sia il nome di ciascun nodo che una tabella di funzioni virtuale dei puntatori delle funzioni di implementazione.
Durante tale fase, viene creata un'istanza di un nodo di elaborazione dei messaggi definito dall'utente. La fase inizia quando il broker crea un flusso di messaggi e richiama la funzione cniCreateNodeContext per ciascuna creazione istanza del nodo definito dall'utente in tale flusso di messaggi. La funzione cniCreateNodeContext è quella specificata nel campo iFpCreateNodeContext dello struct CNI_VFT trasferito a cniDefineNodeClass per tale tipo di nodo. Questa funzione deve assegnare le risorse richieste per tale nodo, inclusa la memoria in modo che la creazione istanza del nodo definito dall'utente può contenere i valori per gli attributi configurati.
Nell'ambito di cniCreateContext, l'estensione definita dall'utente richiama le due funzioni cniCreateInputTerminal e cniCreateOutputTerminal al fine di stabilire i terminali di input e output di cui dispone il nodo di elaborazione dei messaggi.
Durante la fase di elaborazione del ciclo di vita di un nodo di elaborazione dei messaggi definito dall'utente, il messaggio subisce delle trasformazioni, quando hanno luogo alcune operazioni di elaborazione sul messaggio di input.
Quando il broker richiama un messaggio dalla coda e questo arriva nel terminale di input del nodo definito dall'utente, il broker richiama la funzione di implementazione cniEvaluate. Questa funzione viene utilizzata per decidere come procedere con il messaggio.
E' possibile utilizzare una serie di funzioni di utilità nel nodo di elaborazione dei messaggi definito dall'utente per eseguire una serie di funzioni di elaborazione dei messaggi, come ad esempio accedere ai dati del messaggio, accedere a ESQL, trasformare un oggetto del messaggio e distribuire un messaggio. E' necessario includere le funzioni di utilità del nodo che si intende utilizzare per elaborare il messaggio all'interno della funzione cniEvaluate.
Questa interfaccia non crea automaticamente una struttura ad albero secondaria delle proprietà per un messaggio. Non è un requisito di un messaggio disporre di una tale struttura sebbene potrebbe risultare utile crearne una per fornire una struttura ad albero del messaggio coerente indipendentemente dal nodo di input. Se si desidera creare una struttura ad albero secondaria delle proprietà in un messaggio, e si sta anche utilizzando un nodo di input definito dall'utente, è necessario procedere a ciò autonomamente.
Quando un nodo di elaborazione dei messaggi definito dall'utente ha elaborato un messaggio, è necessario assicurarsi che venga eliminato, in modo da rilasciare le risorse di sistema utilizzate e per rilasciare eventuali aree di dati specifiche dell'istanza del nodo, come ad esempio il contesto, acquisite in fase di costruzione o elaborazione del messaggio.
Un'istanza di un nodo di elaborazione dei messaggi definito dall'utente viene eliminata quando il broker richiama la funzione cniDeleteNodeContext.