Dieser Abschnitt vermittelt ein besseres Verständnis der Interaktionen, die bei der Ausführung eines benutzerdefinierten Parsers zwischen den Komponenten von WebSphere Message Broker stattfinden. Hier werden die Ereignisse aufgeführt, die die einzelnen Phasen anstoßen und die im Verlauf und im Anschluss dieser Phasen auftreten, sowie die APIs, die aufgerufen werden. Ein Verständnis der hier beschriebenen Konzepte ermöglicht eine effizientere Konzipierung und Entwicklung von Parsern.
Die erste Phase im Lebenszyklus des benutzerdefinierten Parsers ist die Registrierungsphase. Ihr Zweck ist die Anmeldung des benutzerdefinierten Parsers im Broker. Diese Phase wird von der Initialisierungsphase beim Start des Ausführungsgruppenprozesses ausgelöst.
Der Parser wird im Verlauf der Instanzerstellungsphase im Lebenszyklus erstellt. Wenn eine Eingabenachricht empfangen oder eine Ausgabenachricht in einem Rechenknoten erstellt wird, dann wird der entsprechende Parser ermittelt, und die Parservoraussetzungen werden aus dem Nachrichtenheader (beispielsweise MQMD) abgerufen. Der Broker startet und lädt die LIL (Loadable Implementation Library) und die Parser-Factory. Der Ausführungsgruppenprozess erstellt eine Instanz des Parsers, und der Broker ruft die Funktion 'cpiCreateContext' auf, damit das Parserobjekt den entsprechenden Nachrichtenabschnitt anfordern kann.
Vor dem Aufruf dieser Funktion hat der Broker ein Namenselement als Stammelement für den Parser erstellt. Dieses Element ist jedoch unbenannt. Der Parser sollte dieses Element mit der Funktion cpiSetElementName benennen.
Anschließend ruft der Broker die Funktion 'cpiParseBuffer' auf. Diese Funktion hat an dieser Stelle die Aufgabe, notwendige Initialisierungstasks auszuführen und die Länge des Nachrichteninhalts zurückzugeben, den der Parser übernimmt. Der Parser ermittelt den Umfang der Nachrichtendaten, die syntaktisch analysiert werden müssen, und fordert die entsprechende Anzahl an Bytes an.
Sobald eine Instanz eines benutzerdefinierten Parserobjekts erstellt wird, ruft der Nachrichtenbroker die Implementierungsfunktion 'cpiCreateContext' (für die Kontexterstellung) auf. Dadurch kann der Parser Instanzdaten reservieren, die dem Parser zugeordnet sind. Außerdem ist die Funktion 'cpiDeleteContext' erforderlich, um den Kontext des Parserobjekts wieder zu löschen.
Bei der Verarbeitung werden die Elemente in einem Nachrichtenobjekt, das vom Parser interpretiert wird, manipuliert, geändert und referenziert. Die Verarbeitungsphase des Nachrichtenflusses beginnt, sobald eine erste Nachrichtenverarbeitung stattfindet; dies wäre beispielsweise eine Navigation, bei der auf ein Element in einer Nachricht zugegriffen werden muss, das nicht in der im Broker enthaltenen internen Modelldarstellung dieser Nachricht vorhanden ist.
Im Verlauf der Verarbeitungsphase des Nachrichtenflusses wird der Parser aufgerufen, sobald versucht wird, in die Nachrichtenstruktur zu navigieren. Der Parser überprüft den Puffer, der bei Aufruf der Funktion 'cpiParseBuffer' angelegt wurde, und erstellt alle notwendigen Nachrichtenelemente.
Diese Funktionen werden aufgerufen, sobald eine Navigation (wie beispielsweise ein Filterausdruck, der ein Nachrichtenfeld angibt) in den Teil der Syntaxelementstruktur erfolgt, der eine logische Darstellung der Daten für ein Nachrichtenformat darstellt, das von einem benutzerdefinierten Parser unterstützt wird. Dieser Fall tritt ein, wenn für eine Operation im Broker die Erstellung oder Erweiterung einer Syntaxelementstruktur erforderlich ist.
Nachdem der Parser die relevanten Teile der Syntaxelementstruktur syntaktisch analysiert hat, ruft er die Funktion 'cpiWriteBuffer' auf. Diese Funktion hängt ihren Teil der Syntaxelementstruktur an den Bitstrom in dem Nachrichtenpuffer an, der dem Parserobjekt zugeordnet ist. So entsteht die Ausgabenachricht.
Die Löschphase ist die letzte Phase im Lebenszyklus eines benutzerdefinierten Parsers. Nachdem der Parser seinen Teil der Syntaxelementstruktur in den Bitstrom geschrieben und die Ausgabenachricht erstellt hat, müssen die Systemressourcen, die vom Broker für den Parser erstellt wurden, wieder freigegeben werden.
Die Löschphase beginnt, wenn der Befehl mqsistop eingegeben wird, um den Ausführungsprozess zu beenden.