Acerca del flujo de mensajes XML_PassengerQuery
El flujo de mensajes XML_PassengerQuery recupera los detalles de la
reserva del pasajero especificado en el mensaje de entrada. El tipo de
información en el mensaje de salida depende de la información
proporcionada en el mensaje de entrada:
- Si el mensaje de entrada sólo proporciona un número de reserva, entonces el mensaje sigue la ruta de
SinglePassenger y el mensaje de salida contiene información solamente sobre el vuelo con el que está asociado
el número de reserva.
- Si el mensaje de entrada sólo proporciona un nombre de pasajero, entonces el mensaje sigue la ruta de
AllReservations y el mensaje de salida contiene información sobre todos los vuelos en los que el pasajero
tiene reserva. En este ejemplo suponemos que el nombre completo del pasajero es exclusivo, lo cual no es muy realista
pero simplifica el ejemplo.
El flujo de mensajes utiliza los nodos RouteToLabel y Label para direccionar dinámicamente un mensaje basado
en información del mensaje propiamente dicho sin necesidad de crear una cadena de nodos de filtro, que requeriría
un resultado Booleano true/false (verdadero/falso) en vías de acceso determinadas.
Se proporcionan dos mensajes de entrada para ejecutar el flujo de
mensajes XML_PassengerQuery, para mostrar la recuperación de los dos tipos
de información descritos.
La siguiente figura muestra el flujo de mensajes XML_PassengerQuery.

La siguiente tabla lista los tipos de nodos que se utilizan en el flujo de mensajes XML_PassengerQuery.
Tipo de nodo |
Nombre de nodo |
MQInput |
XML_PASSENGERQUERY_IN |
Compute |
DecideOnQuery; GetPassengerInformation; GetReservationsInformation |
RouteToLabel |
RouteToLabel
|
Label |
SinglePassenger; AllReservations |
MQOutput |
XML_PASSENGERQUERY_FAIL_1; XML_PASSENGERQUERY_FAIL_2; XML_PASSENGERQUERY_OUT |
Si desea ver más información, lea lo referente a
los
nodos en el flujo de mensajes XML_PassengerQuery en la documentación de WebSphere Message Broker.
Para ver el ESQL que se utiliza en el flujo de mensajes, consulte
Crear el flujo de mensajes XML_PassengerQuery.
El flujo de mensajes XML_PassengerQuery realiza las siguientes operaciones:
- El nodo XML_PASSENGERQUERY_IN obtiene el mensaje de entrada de la cola XML_PASSENGERQUERY_IN e identifica
el mensaje de entrada como perteneciente al dominio XML. Por tanto, el flujo de mensajes debe analizar el mensaje
utilizando el analizador XML.
- El nodo XML_PASSENGERQUERY_IN pasa el mensaje al nodo DecideOnQuery. De forma alternativa:
- Si se produce un problema al identificar el mensaje de entrada, el nodo pasa el mensaje, a través del
terminal de anomalías, a la cola XML_PASSENGERQUERY_FAIL.
- Si se ha generado una excepción en sentido descendente y el mensaje se ha restituido, el nodo
XML_PASSENGERQUERY_IN pasa el mensaje, a través del terminal de captación, al nodo
XML_PASSENGERQUERY_FAIL_2, que transfiere el mensaje a la cola
XML_PASSENGERQUERY_FAIL.
- El nodo DecideOnQuery decide la vía de acceso que ha de seguir el mensaje a través del flujo de mensajes. La ruta que tome depende del tipo de información que se proporcione en el
mensaje. El nodo actualiza el Entorno local con la información de destino:
- Si el mensaje contiene un solo número de reserva, el nodo transfiere Single
Passenger en LocalEnvironment. Esto significa que el nodo RouteToLabel pasa el primer mensaje de entrada XML_PassengerQuery
(passengerquery1.enqueue) al nodo SinglePassenger.
- Si el mensaje contiene el nombre completo de un pasajero, el nodo transfiere All
Reservations
en LocalEnvironment. Esto
significa que el nodo RouteToLabel pasa el segundo mensaje de entrada de
XML_PassengerQuery (passengerquery2.enqueue) al nodo AllReservations.
- El nodo DecideOnQuery pasa el mensaje y el LocalEnvironment, a través del terminal de salida, al nodo
RouteToLabel.
- El nodo RouteToLabel pasa el mensaje de entrada al nodo Label pertinente: el nodo
SinglePassenger si el nodo
DecideOnQuery trasfirió Single Passenger en LocalEnvironment; el nodo AllReservations si el nodo
DecideOnQuery transfirió All Reservations en LocalEnvironment.
- Si el nodo RouteToLabel pasó el mensaje de entrada al nodo SinglePassenger, el nodo SinglePassenger pasará el mensaje
de entrada, que contiene un número de reserva, a través del terminal de salida, al nodo GetPassengerInformation. El nodo
GetPassengerInformation busca el número de reserva en la tabla XMLPASSENGERTB de la base de datos RESERVDB y crea un mensaje de
salida a partir de la información que encuentra en la tabla XMLPASSENGERTB. El mensaje incluye el número de reserva, el nombre
completo del pasajero, el número de vuelo, la fecha del vuelo y la clase de asiento.
El nodo GetPassengerInformation pasa entonces el mensaje de salida a través del terminal Out, al nodo XML_PASSENGERQUERY_OUT.
- Si el nodo RouteToLabel pasó el mensaje de entrada al nodo AllReservations, el nodo AllReservations pasará el mensaje
de entrada, que contiene un nombre de pasajero a GetReservationsInformation a través del terminal de salida. El nodo GetReservationsInformation busca el nombre del
pasajero en la tabla XMLPASSENGERTB de la base de datos RESERVDB y crea un mensaje de salida a partir de la información
que encuentra en la tabla XMLPASSENGERTB. El mensaje incluye el nombre completo del pasajero y el número de vuelo,
la fecha del vuelo y la clase de asiento que corresponda a cada una de las reservas que haya hecho el pasajero. El nodo GetReservationsInformation pasa entonces el mensaje de salida, a través del terminal de salida, a
XML_PASSENGERQUERY_OUT.
- El nodo XML_PASSENGERQUERY_OUT transfiere el mensaje de salida a la cola XML_PASSENGERQUERY_OUT.
Volver al ejemplo Acerca de la Reserva de vuelos