Informationen zum Nachrichtenfluss 'XML_PassengerQuery'
Der Nachrichtenfluss 'XML_PassengerQuery' ruft die Reservierungsdaten des in der Eingabenachricht angegebenen Passagiers ab. Die Daten, die in die Ausgabenachricht geschrieben werden, sind abhängig von den Daten in der Eingabenachricht:
- Enthält die Eingabenachricht nur eine Reservierungsnummer, erfolgt die Verarbeitung der Nachricht auf dem Pfad für einzelne Passagiere (Knoten 'SinglePassenger'). Die Ausgabenachricht enthält nur Daten im Zusammenhang mit dem Flug, welcher der angegebenen Reservierungsnummer zugeordnet ist.
- Enthält die Eingabenachricht nur einen Passagiernamen, erfolgt die Verarbeitung der Nachricht auf dem Pfad für alle Reservierungen (Knoten 'AllReservations'). Die Ausgabenachricht enthält Daten über alle Flüge, für die der Passagier über eine Reservierung verfügt. Dabei wird vorausgesetzt, dass der Name des Passagiers eindeutig ist; dies ist zwar unwahrscheinlich, aber es vereinfacht das Beispiel.
Der Nachrichtenfluss verwendet den Knoten 'Weiterleitung_an_Zieladresse' und den Zieladressenknoten, um eine Nachricht auf Grundlage der in der Nachricht enthaltenen Daten dynamisch weiterzuleiten. Dadurch kann auf verkettete Filterknoten verzichtet werden, mit denen die Nachrichten über festgelegte Pfade auf Grundlage von booleschen Ergebnissen vom Typ True/False weitergeleitet würden.
Für die Ausführung des Nachrichtenflusses 'XML_PassengerQuery' sind zwei Eingabenachrichten verfügbar, mit denen der Abruf von beschriebenen unterschiedlichen Daten verdeutlicht wird.
In der folgenden Abbildung sehen Sie den Nachrichtenfluss 'XML_PassengerQuery'.

In der nachfolgenden Tabelle werden die Knotentypen aufgelistet, die im Nachrichtenfluss 'XML_PassengerQuery' verwendet werden.
Knotentyp |
Knotenname |
MQEmpfang |
XML_PASSENGERQUERY_IN |
Rechnen |
DecideOnQuery; GetPassengerInformation; GetReservationsInformation |
Knoten 'Weiterleitung_an_Zieladresse' |
Knoten 'Weiterleitung_an_Zieladresse'
|
Zieladressenknoten |
SinglePassenger; AllReservations |
MQSenden |
XML_PASSENGERQUERY_FAIL_1; XML_PASSENGERQUERY_FAIL_2; XML_PASSENGERQUERY_OUT |
Weitere Informationen finden Sie unter Die Knoten im Nachrichtenfluss 'XML_PassengerQuery' in der WebSphere Message Broker-Dokumentation. Um den in diesem Nachrichtenfluss verwendeten ESQL-Code anzuzeigen, siehe Creating the XML_PassengerQuery message flow (Den Nachrichtenfluss 'XML_PassengerQuery' erstellen).
Der Nachrichtenfluss 'XML_PassengerQuery' führt die folgenden Aktionen durch:
- Der Knoten XML_PASSENGERQUERY_IN ruft die Eingabenachricht aus der Warteschlange XML_PASSENGERQUERY_IN ab und identifiziert die Eingabenachricht als in der XML-Domäne vorhanden. Der Nachrichtenfluss muss daher die Nachricht unter Verwendung des XML-Parsers syntaktisch analysieren.
- Der Knoten XML_PASSENGERQUERY_IN gibt die Nachricht an den Knoten 'DecideOnQuery' weiter. Alternativen:
- Wenn es ein Problem bei der Identifikation der Eingabenachricht gibt, übergibt der Knoten die Nachricht über das Fehlerterminal an den Knoten XML_PASSENGERQUERY_FAIL1, der die Nachricht in die Warteschlange XML_PASSENGERQUERY_FAIL stellt.
- Wenn eine Ausnahmebedingung nachgeschaltet ausgelöst wird und für die Nachricht eine ROLLBACK-Operation ausgeführt wird, gibt der Knoten XML_PASSENGERQUERY_IN die Nachricht über das Catch-Terminal an den Knoten XML_PASSENGERQUERY_FAIL2 weiter, der die Nachricht in die Warteschlange XML_PASSENGERQUERY_FAIL einreiht.
- Der Knoten 'DecideOnQuery' entscheidet, welchen Weg die Nachricht durch den Nachrichtenfluss nimmt.
Der Weg, den die Nachricht nimmt, hängt vom Typ der in der Nachricht enthaltenen Informationen ab.
Der Knoten aktualisiert die lokale Umgebung mit den Zielinformationen:
- Wenn in der Nachricht nur eine Reservierungsnummer enthalten ist, fügt der Knoten Einzelner Passagier in die lokale Umgebung ein. Dies bedeutet, dass der Knoten 'Weiterleitung_an_Zieladresse' (RouteToLabel) die erste Eingabenachricht für XML_PassengerQuery (passengerquery1.enqueue) dem Knoten 'SinglePassenger' (Einzelner Passagier) übergibt.
- Wenn in der Nachricht der vollständige Name des Passagiers angegeben ist, fügt der Knoten Alle Reservierungen in die lokale Umgebung ein.
Dies bedeutet, dass der Knoten 'Weiterleitung_an_Zieladresse' die zweite Eingabenachricht für 'XML_PassengerQuery' (passengerquery2.enqueue) dem Knoten 'AllReservations' (Alle Reservierungen) übergibt.
- Der Knoten 'DecideOnQuery' übergibt die Nachricht und die lokale Umgebung über das Ausgangsterminal an den Knoten 'Weiterleitung_an_Zieladresse'.
- Der Knoten 'Weiterleitung_an_Zieladresse' übergibt die Eingabenachricht an den entsprechenden Zieladressenknoten: an den Knoten 'SinglePassenger', wenn der Knoten 'DecideOnQuery' Einzelner Passagier in 'LocalEnvironment' gespeichert hat, oder den Knoten 'AllReservations', wenn der Knoten 'DecideOnQuery' Alle Reservierungen in 'LocalEnvironment' gespeichert hat:
- Wenn der Knoten 'Weiterleitung_an_Zieladresse' die Eingabenachricht an den Knoten 'SinglePassenger' weitergeleitet hat, übergibt der Knoten 'SinglePassenger' die Eingabenachricht, die eine Reservierungsnummer enthält, über das Ausgangsterminal an den Knoten 'GetPassengerInformation'. Der Knoten 'GetPassengerInformation' überprüft die Reservierungsnummer in der Tabelle XMLPASSENGERTB der Datenbank RESERVDB und erstellt eine Ausgabenachricht aus den Informationen in der Tabelle XMLPASSENGERTB einschließlich der Reservierungsnummer, des vollständigen Namens des Passagiers, der Flugnummer, des Flugdatums und der Klasse.
Der Knoten 'GetPassengerInformation' übergibt dann die Ausgabenachricht über das Ausgangsterminal an den Knoten XML_PASSENGERQUERY_OUT.
- Wenn der Knoten 'Weiterleitung_an_Zieladresse' die Eingabenachricht an den Knoten 'AllReservations' übergibt, leitet dieser die Eingabenachricht, in der der Name des Passagiers enthalten ist, über das Ausgangsterminal an 'GetReservationsInformation' weiter.
Der Knoten 'GetReservationsInformation' sucht in der Tabelle XMLPASSENGERTB der Datenbank RESERVDB nach dem Passagiernamen und erstellt eine Ausgabenachricht aus den Informationen in der Tabelle XMLPASSENGERTB einschließlich des vollständigen Passagiernamens, der Flugnummer, des Flugdatums und der Klasse für alle Reservierungen, die der Passagier vorgenommen hat.
Der Knoten 'GetReservationsInformation' leitet die Ausgabenachricht über das Ausgangsterminal an XML_PASSENGERQUERY_OUT weiter.
- Der Knoten XML_PASSENGERQUERY_OUT reiht die Ausgabenachricht in die Warteschlange XML_PASSENGERQUERY_OUT ein.
Zurück zu "Das Beispielprogramm 'Airline Reservations'"