Dieser Abschnitt enthält Hinweise zur Erstellung von Nachrichtenverarbeitungsknoten, um sicherzustellen, dass diese richtig arbeiten. Hier wird erläutert, wie Sie mit dem Nachrichtenverarbeitungsknoten innerhalb von Nachrichten navigieren.
Ein Syntaxelement mit Verbindungen zu anderen Elementen
Syntaxelementstrukturbaum
Das Element A ist das Stammelement der Baumstruktur. Ihm sind daher keine Elemente übergeordnet. Dieses Stammelement verfügt über das erste untergeordnete Element B. Da A keine weiteren untergeordneten Elemente hat, ist Element B gleichzeitig auch das letzte untergeordnete Element von A.
Element B verfügt über drei untergeordnete Elemente, nämlich C, D und E. Element C ist das erste untergeordnete Element, E das letzte untergeordnete Element von B.
Element C hat zwei gleichgeordnete Elemente, nämlich D und E. Das nächste gleichgeordnete Element von C ist das Element D. Das nächste gleichgeordnete Element von D ist das Element E, das vorherige gleichgeordnete Element von E ist D, und das vorherige gleichgeordnete Element von D ist C.
Erste Generation von Syntaxelementen in einer typischen Nachricht
Diese Elemente der ersten Generation werden oft als "Ordner" bezeichnet, in denen die Syntaxelemente, die die Nachrichtenheader und die Nutzdaten darstellen, gespeichert werden. In diesem Beispiel ist das erste untergeordnete Element des Stammelements der Ordner Properties (Eigenschaften). Das nächste gleichgeordnete Element von Properties (Eigenschaften) ist der Ordner für den MQMD-Header der ankommenden WebSphere MQ-Nachrichten. Das nächste gleichgeordnete Element ist der Ordner für den MQRFH2-Header. Schließlich gibt es noch den Ordner für die Nachrichteninhalte, die Nutzdaten; in unserem Beispiel handelt es sich um eine XML-Nachricht.
In der Abbildung oben ist auch ein MQMD- und ein MQRFH2-Header enthalten. Alle von einem MQmessage-Nachrichtenverarbeitungsknoten empfangenen Nachrichten verfügen über MQMD-Header; es gibt noch eine Reihe anderer Header, die ebenfalls vorkommen können.
<Business>
<Product type='messaging'></Product>
<Company>
<Title>IBM</Title>
<Location>Hursley</Location>
<Department>WebSphere MQ</Department>
</Company>
</Business>
Die Navigation in einer Nachricht kann über die Dienstprogrammfunktionen und Methoden des Knotens oder die ähnlichen Dienstprogrammfunktionen des Parsers erfolgen. Bei der XML-Nachricht, die oben zu sehen ist, muss zunächst die Funktion cniRootElement aufgerufen werden, wobei der Knoten die Nachricht als Eingabe für diese Funktion erhalten hat. In Java muss die Funktion getRootElement für die ankommende MbMessage aufgerufen werden. Daraufhin wird ein MbElement zurückgegeben, das das Stammelement (Root) des Elements darstellt. Das Stammelement sollte nicht durch einen benutzerdefinierten Knoten geändert werden.
In der Abbildung oben ist das letzte untergeordnete Element des Stammelements der Ordner mit dem XML-Syntaxanalysebaum. In einem mit C erstellten Knoten erfolgt die Navigation in diesem Ordner über den Aufruf von cniLastChild (wobei die Ausgabe des vorherigen Aufrufs die Eingabe für diese Funktion darstellt), in einem mit Java erstellten Knoten über den Aufruf der Methode getLastChild für das Stammelement.
In der höchsten Ebene gibt es nur ein Element (<Business>), daher erfolgt beim Aufruf von cniFirstChild (in C) oder getFirstChild (in Java) eine Navigation zu dieser Stelle im Strukturbaum. Sie können den Typ des Elements (in diesem Fall ein Namenselement) mit cniElementType oder getElementType abrufen, und anschließend mit der Funktion cniElementName oder getName den Namen selbst (Business).
<Business> hat zwei untergeordnete Elemente, <Product> und <Company>; Sie können also mit dem Aufruf von cniFirstChild oder getFirstChild und dem anschließenden Aufruf von cniNextSibling oder getNextSibling nacheinander zu diesen Elementen gelangen.
<Product> hat ein Attribut (type='messaging'), bei dem es sich um ein untergeordnetes Element handelt. Navigieren Sie auch zu diesem Element wieder mit Hilfe der Funktionen cniFirstChild oder getFirstChild, und rufen Sie anschließend mit cniElementType oder getType den Elementtyp ab (es handelt sich um ein Name/Wert-Element). Mit cniElementName oder getName können Sie den Namen abrufen. Das 'type'-Attribut des Wertes wird mit der Funktion cniElementValueType abgerufen, gefolgt von der entsprechenden Funktion in der Gruppe cniElementValue. In unserem Beispiel ist dies die Funktion cniElementCharacterValue. In Java wird die Methode getValue verwendet, die ein Java-Objekt zurückgibt, das den Elementwert darstellt.
<Company> hat drei untergeordnete Elemente, und jedes dieser drei Elemente hat wiederum ein untergeordnetes Element, bei dem es sich um ein Wertelement handelt (IBM, Hursley und WebSphere MQ). Sie können zu diesen Elementen mit den oben beschriebenen Funktionen navigieren und auf ihre Werte zugreifen.
Es stehen weitere Funktionen zur Verfügung, mit denen die Elementbaumstruktur ganz oder teilweise kopiert werden kann. Diese Kopie kann anschließend geändert werden, indem Elemente hinzugefügt oder entfernt und ihre Namen und Werte geändert werden, um so eine Ausgabenachricht zu erstellen.