Questo argomento fornisce una guida per la scrittura di propri nodi di elaborazione messaggi in modo da garantirne il corretto funzionamento. Viene spiegato come utilizzare il proprio nodo di elaborazione messaggi per la navigazione di un messaggio.
Un elemento di sintassi con collegamenti ad altri elementi
Struttura ad albero dell'elemento di sintassi
L'elemento A è l'elemento root della struttura ad albero. Non ha parent in quanto è il root. Ha un primo child, l'elemento B. Poiché A non ha altri child, l'elemento B è anche l'ultimo child di A.
L'elemento B ha tre child: gli elementi C, D ed E. L'elemento C è il primo child di B; l'elemento E è l'ultimo child di B.
L'elemento C ha due elementi associati: gli elementi D ed E. L'elemento associato successivo dell'elemento C è l'elemento D. L'elemento associato successivo dell'elemento D è l'elemento E. L'elemento associato precedente dell'elemento E è l'elemento D. L'elemento associato precedente dell'elemento D è l'elemento C.
Prima creazione degli elementi di sintassi di un tipico messaggio
In tali elementi, menzionati spesso in fase di creazione come "cartelle", vengono memorizzati gli elementi di sintassi che rappresentano le intestazioni e i dati del contenuto dei messaggi. In questo esempio, il primo elemento child di root è la cartella Properties. L'elemento associato successivo di Properties è la cartella MQMD dei messaggi WebSphere MQ in entrata. L'elemento associato successivo è la cartella per l'intestazione MQRFH2. Infine, è presente la cartella che rappresenta il contenuto del messaggio, che (in questo esempio) è un messaggio XML.
La figura riportata sopra include le intestazioni MQMD e MQRFH2. Tutti i messaggi ricevuti da un nodo di elaborazione MQmessage includono un'intestazione MQMD; possono essere incluse inoltre altre intestazioni.
<Business>
<Product type='messaging'></Product>
<Company>
<Title>IBM</Title>
<Location>Hursley</Location>
<Department>WebSphere MQ</Department>
</Company>
</Business>
Per navigare in un messaggio, è possibile utilizzare i metodi e le funzioni di utilità del nodo (o le funzioni di utilità del programma di analisi similari). Prendendo in esame il messaggio XML mostrato in precedenza, è necessario prima richiamare cniRootElement, con il messaggio ricevuto dal nodo come input di questa funzione. In Java, è necessario richiamare getRootElement su MbMessage in entrata. Questo restituisce un MbElement che rappresenta il root dell'elemento. L'elemento root non deve essere modificato da un nodo definito dall'utente.
La figura riportata in precedenza mostra che l'ultimo child dell'elemento root è la cartella contenente la struttura ad albero del programma di analisi XML. E' possibile navigare in questa cartella richiamando cniLastChild (con l'output della chiamata precedente come input di questa funzione) in un nodo C oppure richiamando il metodo getLastChild sull'elemento root, in un nodo Java.
E' presente solo un elemento (<Business>) al livello superiore del messaggio, cosicché richiamando cniFirstChild (in C) o getFirstChild (in Java) ci si porta in questo punto nella struttura ad albero. E' possibile utilizzare cniElementType o getElementType per ottenere il relativo tipo (ovvero nome), seguito da cniElementName o getName per restituire il nome stesso (Business).
<Business> ha due child, <Product> e <Company>, è possibile quindi utilizzare cniFirstChild o getFirstChild seguito da cniNextSibling o getNextSibling per navigarvi.
<Product> ha un attributo (type='messaging'), che è un elemento child. Utilizzare cniFirstChild o getFirstChild nuovamente per navigare in questo elemento e cniElementType o getType per restituire il relativo tipo (ovvero nome-valore). Utilizzare cniElementName o getName come prima per ottenere il nome. Per ottenere il valore, richiamare cniElementValueType per restituire il tipo, seguito dalla funzione appropriata nel gruppo cniElementValue. In questo esempio è cniElementCharacterValue. In Java utilizzare il metodo getValue, che restituisce un oggetto Java che rappresenta il valore dell'elemento.
<Company> ha tre elementi child, ciascuno dei quali ha un child che è un elemento valore (IBM, Hursley, e WebSphere MQ). E' possibile utilizzare le funzioni già descritte per navigarvi ed accedere ai relativi valori.
Per copiare la struttura ad albero dell'elemento (o parte di esso) sono disponibili altre funzioni. La copia può quindi essere modificata aggiungendo o eliminando elementi, e modificandone nomi e valori, per creare un messaggio di output.