Mustercode 'Airline Reservations' ausführen
Mit dem Mustercode 'Airline Reservations' können Sie folgende Tasks simulieren:
- Sitzplatzreservierung
- Anfordern von Informationen zu einem Passagier
- Anfordern von Informationen zu einem bestimmten Flug sowie der entsprechenden Passagierliste
- Stornieren einer Reservierung
Für jede Task reihen Sie eine Nachricht in eine bestimmte WebSphere MQ-Warteschlange ein.
Der entsprechende Nachrichtenfluss empfängt die Nachricht von der Warteschlange und verarbeitet sie.
In den folgenden Anweisungen wird beschrieben, wie die zur Verfügung gestellten selbstdefinierenden XML-Nachrichten durch die Nachrichtenflüsse des Mustercodes 'Airline Reservations' eingereiht werden und welche Ausgabe Sie von den Nachrichtenflüssen erwarten können.
Da die Nachrichtenflüsse Datenbanken aktualisieren, müssen Sie die Nachrichtenflüsse in der Reihenfolge ausführen, in der sie in den folgenden Anweisungen aufgelistet sind.
Bei Ausführung des Mustercodes werden in der Anzeige für Probleme im WebSphere Message Brokers Toolkit
möglicherweise Fehlernachrichten ähnlich der folgenden angezeigt: Nicht auflösbarer Datenbanktabellenverweis T.CLASSTYPE.
Diese Warnung zeigt an, dass Definitionen für die Datenbanktabellen nicht in das Projekt importiert wurden.
Die Warnung hat während der Ausführung keinerlei Auswirkungen auf den Mustercode.
Wie der Inhalt der Datenbank des Mustercodes angezeigt wird, hängt von dem Datenbankprodukt ab, das installiert ist.
Verwenden Sie für DB2-Datenbanken die Tools, die von DB2 bereitgestellt werden, z. B. die DB2-Steuerzentrale.
Sollten bei der Ausführung des Mustercodes Probleme auftreten, lesen Sie den Abschnitt Probleme bei der Ausführung von Mustercodes beheben in der WebSphere Message Broker-Dokumentation.
Hinweis: Wenn mehrere Testnachrichten im Nachrichtenfluss ausgeführt werden, kann dies zu einem offensichtlichen Fehler führen.
Dies liegt daran, dass ein Schwellenwert überschritten wurde und die Nachricht den Nachrichtenfluss deswegen anders durchläuft.
Zur Behebung dieses Fehlers ist die Datenbank auf ihren ursprünglichen Inhalt zurückzusetzen.
Nachrichtenfluss 'XML_Reservation' ausführen
Mit dem Nachrichtenfluss 'XML_Reservation' werden Plätze für den in der Eingabenachricht aufgeführten Flug reserviert. Die Reservierungen werden mit Antwortnachrichten bestätigt.
So führen Sie den Nachrichtenfluss 'XML_Reservation' aus:
- Erweitern Sie in der Ansicht "Brokerentwicklung" das Projekt
Airline XML Message Flows
und klicken Sie anschließend unter 'Flusstests' doppelt auf
reservation1.mbtest, um die Datei im Testclient zu öffnen.
- Klicken Sie im Testclient auf In Warteschlange stellen.
- Klicken Sie auf Nachricht senden. Die erste Eingabenachricht wird in die Warteschlange XML_RESERVATION_IN eingereiht.
- Klicken Sie im Testclient auf Aus Warteschlange entfernen.
- Klicken Sie auf Nachricht abrufen, um die erste
Nachricht, die die Buchungsbestätigung für Mary Smith enthält, aus der Warteschlange zu
lesen.
Die Antwortnachricht bestätigt die Reservierung für einen Passagier und enthält dessen
vollständigen Namen, die Klasse des Platzes sowie die eindeutige Reservierungsnummer.
Im folgenden Beispiel wird das Format einer Antwortnachricht gezeigt:
<PassengerReservationResponse>
<ListOfConfirmations>
<Confirmation>
<FirstName>Mary</FirstName>
<LastName>Smith</LastName>
<Class>F</Class>
<ReservationNumber>CA937200305251</ReservationNumber>
</Confirmation>
</ListOfConfirmations>
</PassengerReservationResponse>
- Wiederholen Sie die vorherigen Schritte, um die verbleibenden drei Nachrichten, die
die Buchungsbestätigungen für Diane Rose, Debra Wiess und Atila Wiess enthalten, einzeln
aus der Warteschlange 'XML_RESERVATION_OUT' abzurufen.
- Überprüfen Sie die Tabelle XMLFLIGHTTB in der Datenbank RESERVDB.
Der Wert im Feld RESERVATIONSEQNO ist in allen vier Zeilen um vier erhöht worden. In der Zeile, die den Flug CA937 am 25. Mai 2003 enthält, hat der Nachrichtenfluss 'XML_Reservation' folgende Änderungen vorgenommen:
- Erhöhung des Werts um zwei für ECONOMICCLASS
- Erhöhung des Werts um zwei für FIRSTCLASS
- Verringerung des Werts um zwei für TOTALECONOMIC
- Verringerung des Werts um zwei für TOTALFIRST
- Überprüfen Sie die Tabelle XMLPASSENGERTB in der Datenbank RESERVDB. Der Nachrichtenfluss 'XML_Reservation' hat folgende Änderungen vorgenommen:
- Hinzufügen von vier neuen Zeilen in Tabelle XMLPASSENGERTB, eine Zeile für jede in der Eingabenachricht aufgeführte Person.
- Zuordnen einer eindeutigen Reservierungsnummer zu jeder Reservierung.
- Öffnen Sie die Datei reservation2.mbtest im
Testclient und klicken Sie dann aufIn Warteschlange
einreihen.
- Klicken Sie auf Nachricht senden, um die zweite Eingabenachricht in die Warteschlange 'XML_RESERVATION_IN' zu stellen.
- Klicken Sie im Testclient auf Aus Warteschlange entfernen.
- Klicken Sie auf Nachricht abrufen, um eine
Antwortnachricht aus der Warteschlange 'XML_RESERVATION_OUT' abzurufen.
Die Antwortnachricht bestätigt die zweite Reservierung für Mary Smith, enthält ihren vollständigen Namen, die Klasse ihres Platzes und ihre eindeutige Reservierungsnummer. Die Struktur der Antwortnachricht entspricht der Struktur der Antworten auf die erste Eingabenachricht.
- Überprüfen Sie die Tabelle XMLFLIGHTTB in der Datenbank RESERVDB.
Der Wert im Feld RESERVATIONSEQNO ist in allen vier Zeilen um eins erhöht worden. In der Zeile, die den Flug BA039 am 25. Mai 2003 enthält, hat der Nachrichtenfluss 'XML_Reservation' folgende Änderungen vorgenommen:
- Erhöhung des Werts um eins für FIRSTCLASS
- Verringerung des Werts um eins für TOTALFIRST
- Überprüfen Sie die Tabelle XMLPASSENGERTB in der Datenbank RESERVDB.
Der Nachrichtenfluss 'XML_RESERVATION' hat folgende Änderungen vorgenommen:
- Hinzufügen einer neuen Zeile zur Tabelle XMLPASSENGERTB für die in der Eingabenachricht aufgeführte Person.
- Zuordnen einer eindeutigen Reservierungsnummer zur Reservierung.
Nachrichtenfluss 'XML_PassengerQuery' ausführen
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.
So führen Sie den Nachrichtenfluss 'XML_PassengerQuery' aus:
- Öffnen Sie die Datei passengerquery1.mbtest im
Testclient und klicken Sie auf In Warteschlange einreihen.
- Klicken Sie auf Nachricht senden. Die erste Eingabenachricht wird in die Warteschlange XML_PASSENGERQUERY_IN eingereiht.
- Klicken Sie im Testclient auf Aus Warteschlange entfernen.
- Klicken Sie auf Nachricht abrufen, um eine Ausgabenachricht aus der Warteschlange 'XML_PASSENGERQUERY_OUT' abzurufen. Die Ausgabenachricht enthält den Namen und die Reservierungsdaten von Debra Weiss, der die in der Eingabenachricht aufgeführte Reservierungsnummer zugeordnet wurde. Im folgenden Beispiel wird das Format der Ausgabenachricht gezeigt:
<PassengerInfoResponse>
<PassengerInfo>
<ReservationNumber>CA937200305253</ReservationNumber>
<FirstName>Debra</FirstName>
<LastName>Weiss</LastName>
<FlightNumber>CA937</FlightNumber>
<Date>20030525</Date>
<Class>Y</Class>
</PassengerInfo>
<PassengerInfoResponse>
- Öffnen Sie die Datei passengerquery2.mbtest im Testclient
und klicken Sie aufIn Warteschlange einreihen.
- Klicken Sie auf Nachricht senden, um die zweite Eingabenachricht in die Warteschlange 'XML_PASSENGERQUERY_IN' zu stellen.
- Klicken Sie im Testclient auf Aus Warteschlange entfernen.
- Klicken Sie auf Nachricht abrufen, um eine Ausgabenachricht aus der Warteschlange 'XML_PASSENGERQUERY_OUT' abzurufen.
Die Ausgabenachricht enthält Name und Reservierungsdaten zu den beiden Reservierungen, die für Mary
Smith getätigt wurden, der Person, die in der Eingabenachricht aufgeführt ist. Im folgenden Beispiel wird das Format der Ausgabenachricht gezeigt:
<PassengerInfoResponse>
<ListOfReservations>
<Reservation>
<FlightNumber>CA937</FlightNumber>
<Date>20030525</Date>
<Class>F</Class>
</Reservation>
<Reservation>
<FlightNumber>BA039</FlightNumber>
<Date>20030525</Date>
<Class>F</Class>
</Reservation>
</ListOfReservations>
</PassengerInfoResponse>
- Vergewissern Sie sich in der Datenbank RESERVDB, dass der Nachrichtenfluss 'XML_PassengerQuery' keinerlei Änderungen an den Daten vorgenommen hat.
Nachrichtenflüsse 'XML_FlightQuery' ausführen
Der Nachrichtenfluss 'XML_FlightQuery' besteht aus drei kurzen Nachrichtenflüssen,
die für den Broker implementiert und gestartet werden müssen, damit der Nachrichtenfluss
'XML_FlightQuery' ausgeführt werden kann:
- XML_FlightQueryOut
- XML_FlightQueryReply
- XML_FlightQueryIn
Der Nachrichtenfluss 'XML_FlightQuery' ruft Daten über den in der Eingabenachricht aufgeführten
Flug sowie eine Liste der Passagiere ab, die für diesen Flug Reservierungen getätigt haben.
So führen Sie den Nachrichtenfluss 'XML_FlightQuery' aus:
- Öffnen Sie die Datei flightdetailsquery.mbtest im
Testclient und klicken Sie dann aufIn Warteschlange
einreihen.
- Klicken Sie auf Nachricht senden, um die Eingabenachricht in die Warteschlange 'XML_FLIGHTQUERY_IN' zu stellen.
- Klicken Sie im Testclient auf Aus Warteschlange entfernen.
- Klicken Sie auf Nachricht abrufen, um eine Ausgabenachricht aus der Warteschlange 'XML_FLIGHTQUERY_OUT' abzurufen.
Die Antwortnachricht enthält Informationen zu den in der ersten Klasse und Economy Class insgesamt verfügbaren Sitzplätzen, deren Preis sowie die Anzahl der freien Plätze. Im folgenden Beispiel wird das Format der Antwortnachricht gezeigt:
<FlightDetailsInfoResponse>
<Flight number="CA937" Flightdate="20030525">
<FirstClass>
<Capacity>48</Capacity>
<Used>2</Used>
<Price>300</Price>
</FirstClass>
<EconomyClass>
<Capacity>198</Capacity>
<Used>2</Used>
<Price>200</Price>
</EconomyClass>
<Origin>BEIJING</Origin>
<Destination>LONDON</Destination>
</Flight>
<ListOfPassengers>
<Passenger>
<ReservationNumber>CA937200305251</ReservationNumber>
<FirstName>Mary</FirstName>
<LastName>Smith</LastName>
<Class>F</Class>
</Passenger>
<Passenger>
<ReservationNumber>CA937200305252</ReservationNumber>
<FirstName>Diane</FirstName>
<LastName>Rose</LastName>
<Class>Y</Class>
</Passenger>
<Passenger>
<ReservationNumber>CA937200305253</ReservationNumber>
<FirstName>Debra</FirstName>
<LastName>Weiss</LastName>
<Class>Y</Class>
</Passenger>
<Passenger>
<ReservationNumber>CA937200305254</ReservationNumber>
<FirstName>Atila</FirstName>
<LastName>Weiss</LastName>
<Class>F</Class>
</Passenger>
</ListOfPassengers>
</FlightDetailsInfoResponse>
- Überprüfen Sie in der Datenbank RESERVDB, ob durch den Nachrichtenfluss 'XML_FlightQuery' Daten geändert wurden.
Nachrichtenfluss 'XML_CancelReservation' ausführen
Der Nachrichtenfluss 'XML_CancelReservation' storniert alle in der Eingabenachricht aufgeführten Reservierungen (anhand der Reservierungsnummer).
So führen Sie den Nachrichtenfluss 'XML_CancelReservation' aus:
- Öffnen Sie die Datei cancelreservation.mbtest im
Testclient und klicken Sie auf In Warteschlange einreihen.
- Überprüfen Sie die Benutzerdatenbank 'RESERVDB', um sicherzustellen, dass die in der
Datei cancelreservation.mbtest aufgeführten Reservierungsnummern in der Tabelle
'XMLPASSENGERTB' vorhanden sind.
Wenn die Reservierungsnummern in
cancelreservation.mbtest nicht vorhanden sind, bearbeiten Sie das Feld
Nachrichtendaten.
- Klicken Sie auf Nachricht senden.
Die Eingabenachricht wird in die Warteschlange XML_CANCELRESERVATION_IN eingereiht.
- Klicken Sie im Testclient auf Aus Warteschlange entfernen.
- Klicken Sie auf Nachricht abrufen, um eine Ausgabenachricht aus der Warteschlange 'XML_CANCELRESERVATION_OUT' abzurufen. Bei der Ausgabenachricht handelt es sich um eine Kopie der Eingabenachricht.
- Überprüfen Sie die Tabelle XMLFLIGHTTB in der Datenbank RESERVDB. In der Zeile, die den Flug CA937 am 25. Mai 2003 enthält, hat der Nachrichtenfluss 'XML_CancelReservation' folgende Änderungen vorgenommen:
- Verringerung des Werts um zwei für ECONOMICCLASS
- Verringerung des Werts um zwei für FIRSTCLASS
- Erhöhung des Werts um zwei für TOTALECONOMIC
- Erhöhung des Werts um zwei für TOTALFIRST
- Überprüfen Sie die Tabelle XMLPASSENGERTB in der Datenbank RESERVDB. Durch den Nachrichtenfluss 'XML_CancelReservation' wurden die folgenden Änderungen vorgenommen:
- Entfernen von vier Zeilen aus der Tabelle XMLPASSENGERTB, je eine Zeile für jede in der Eingabenachricht aufgeführte Person.
Zurück zum Beginn des
Mustercodes