La struttura ad albero del messaggio è inizialmente popolata dal nodo di input del flusso di messaggi.
Quando il nodo di input riceve il messaggio di input, esso crea la struttura ad albero Properties (la prima struttura ad albero secondaria dell'albero del messaggio) e la popola con le proprietà del nodo configurate nel flusso di messaggi. Poi esamina il contenuto del flusso di bit del messaggio di input e crea il resto della struttura ad albero del messaggio in modo da riflettere tale contenuto. Questo processo dipende in qualche misura dal nodo di input stesso, che è governato dal trasporto attraverso cui è ricevuto il messaggio:
Il nodo di input prima richiama il programma di analisi MQMD e crea la struttura ad albero secondaria per quella intestazione.
Un messaggio può avere zero o più intestazioni aggiuntive che seguono MQMD e queste intestazioni sono concatenate, con il campo Format di un'intestazione che definisce il formato dell'intestazione successiva, fino all'ultima intestazione inclusa, che definisce il formato del contenuto del messaggio. Se è presente un'intestazione MQRFH e MQRFH2 nella catena, i dati nome/valore in una di queste due intestazioni possono contenere anche informazioni circa il formato dei dati successivi. Se il valore specificato in Format è un programma di analisi riconosciuto, questo ha sempre la precedenza sui dati nome/valore.
Il broker richiama il programma di analisi appropriato per interpretare ogni intestazione, seguendo la catena nel messaggio. Ogni intestazione è analizzata in modo indipendente. I campi all'interno di una singola intestazione sono analizzati in un ordine che è governato dal programma di analisi. Non è possibile prevedere o fare affidamento sull'ordine prescelto, ma l'ordine in cui vengono analizzati i campi non influisce sull'ordine in cui essi appaiono all'interno dell'intestazione.
Il broker assicura che venga conservata l'integrità delle intestazioni che precedono un contenuto del messaggio. Il formato di ogni parte del messaggio è definito dal campo Format nell'intestazione immediatamente precedente (se la parte successiva è un formato WebSphere MQ riconosciuto) o dai valori impostati nell'intestazione MQRFH o MQRFH2:
Questo processo è ripetuto tante volte quanto è richiesto dal numero di intestazioni che precede il contenuto del messaggio. Non è necessario che a popolare questi campi sia l'utente; è il broker stesso a gestire questa sequenza.
Il broker completa questo processo per garantire che i campi Format nelle intestazioni identifichino in modo corretto ogni parte del messaggio. Se il broker non lo fa, WebSphere MQ potrebbe non essere in grado di consegnare il messaggio. Poiché il programma di analisi del contenuto del messaggio non è un formato di intestazione WebSphere MQ riconosciuto, il broker sostituisce questo valore nel campo Format dell'ultima intestazione con il valore MQFMT_NONE. Il valore originale in quel campo è memorizzato nel campo Domain nell'intestazione MQRFH o MQRFH2 per conservare le informazioni circa il contenuto del messaggio. Senza MQRFH o MQRFH2, le informazioni sono memorizzate nella struttura ad albero Properties.
Ad esempio, se l'intestazione MQRFH2 precede immediatamente il contenuto del messaggio e il relativo campo Format è impostato su XML, indicando che il contenuto del messaggio deve essere analizzato dal programma di analisi XML generico, il campo Domain MQRFH2 è impostato su XML e il relativo campo Format reimpostato su MQFMT_NONE.
Tali azioni potrebbero far sì che le informazioni siano memorizzate esplicitamente da un'espressione ESQL sostituita dal broker.
Una volta analizzate tutte le intestazioni e le strutture ad albero secondarie create corrispondenti all'interno della struttura ad albero del messaggio, il nodo di input associa il programma di analisi specificato al contenuto del messaggio. E' necessario specificare il programma di analisi da associare al contenuto del messaggio. Questo è possibile in un'intestazione nel messaggio, ad esempio la cartella <mcd> all'interno dell'intestazione MQRFH2 (generalmente consigliato) o nelle proprietà del nodo di input (consigliato se il messaggio non include intestazioni). Il nodo di input stabilisce l'associazione come descritto di seguito:
Il nodo SCADAInput crea messaggi formato WebSphere MQ con intestazioni MQRFH2 dai messaggi di input che il listener riceve sulla porta TCP/IP.
Il contenuto del messaggio non è analizzato per motivi relativi alle prestazioni; è possibile che la configurazione del flusso di messaggi non richieda l'analisi del contenuto del messaggio. Il contenuto è analizzato solo se si fa ad esso riferimento durante il flusso di messaggi.
Ad esempio, il contenuto del messaggio è analizzato quando si fa riferimento a Root.XML.Field (o InputRoot.XML.Field nel nodo Compute) o Root.MRM.Field. A seconda dei percorsi presi nel flusso di messaggi, questa analisi potrebbe aver luogo in punti diversi. A questa analisi, quando in primo luogo è necessario un approccio, si fa riferimento anche come analisi parziale e nella normale elaborazione essa non influenza la logica di un flusso di messaggi. Tuttavia, esistono delle implicazioni per gli scenari di gestione degli errori, come descritto in Gestione degli errori nei flussi di messaggi.
Se si desidera che un flusso di messaggi accetti i messaggi da più di un dominio di messaggi, è possibile includere un'intestazione MQRFH2 nel messaggio da cui i nodi di input estraggono il dominio di messaggi e le informazioni correlate sulla definizione del messaggio (serie, tipo e formato).
Se si impostano le intestazioni del messaggio o le proprietà del nodo di input per identificare un programma di analisi definito dall'utente, il modo in cui esso interpreta il messaggio e crea la struttura ad albero logica potrebbe differenziarsi da quello qui descritto.
Se non esistono intestazioni o queste intestazioni non specificano il programma di analisi per il contenuto del messaggio, è necessario impostare le proprietà del nodo di input per definire il programma di analisi del contenuto del messaggio. In caso contrario, il messaggio è considerato come BLOB. E' possibile specificare un programma di analisi definito dall'utente.
Il programma di analisi specificato è associato al contenuto del messaggio tramite il nodo di input (come per i protocolli WebSphere MQ Enterprise Transport, WebSphere MQ Mobile Transport e WebSphere MQ Telemetry Transport) e il contenuto del messaggio non è analizzato.
Se si impostano le intestazioni del messaggio o le proprietà del nodo di input per identificare un programma di analisi definito dall'utente, il modo in cui esso interpreta il messaggio e crea la struttura ad albero logica potrebbe differenziarsi da quello qui descritto.
Tale interfaccia non genera automaticamente una struttura ad albero secondaria relativa alle proprietà per un messaggio (tale struttura ad albero secondaria è illustrata nella sezione Struttura ad albero del messaggio). Una struttura ad albero secondaria relativa alle proprietà non costituisce un requisito per un messaggio, sebbene potrebbe risultare utile crearne una per fornire una struttura ad albero secondaria del messaggio coerente indipendentemente dal nodo di input. Se si desidera creare una struttura ad albero relativa alle proprietà all'interno della struttura ad albero del messaggio e si sta utilizzando un nodo di input definito dall'utente, è necessario farlo per proprio conto.
Se si ha la necessità di elaborare messaggi che non sono conformi ad alcuno dei domini di messaggi definiti, è possibile utilizzare l'interfaccia di programmazione del linguaggio C per creare un nuovo programma di analisi definito dall'utente.
Fare riferimento all'interfaccia del nodo per comprendere come questo utilizza i programmi di analisi e se è possibile configurarlo per modificarne il funzionamento. Se il nodo utilizza un programma di analisi definito dall'utente, la struttura ad albero creata per il messaggio potrebbe esser leggermente diversa da quella creata per i programmi di analisi integrati. Un nodo di input definito dall'utente è in grado di analizzare un messaggio di input completamente o può partecipare all'analisi parziale in cui il contenuto del messaggio è analizzato solo quando richiesto.
E' possibile creare anche i propri nodi di output e di elaborazione del messaggio in C o Java.