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, 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, 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 se presupones 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 sin tener que crear una cadena de nodos de filtro, lo que requiere un resultado Booleano verdadero o falso para direccionar mensajes por 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.
El diagrama siguiente 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 |
Para obtener más información sobre los nodos que se utilizan en este ejemplo, consulte
Nodos incorporados 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 XMLNSC. Por lo tanto, el flujo de mensajes debe analizar el mensaje utilizando el analizador XMLNSC.
- 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_1.
- 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 ruta 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 sólo contiene un número de reserva, el
nodo coloca Single Passenger en el entorno local, de modo que el nodo
RouteToLabel pasa el primer mensaje de entrada XML_PassengerQuery
(passengerquery1.mbtest) al nodo SinglePassenger.
- Si el mensaje contiene un nombre completo del pasajero, el nodo coloca
All Reservations en el entorno local, de forma que el nodo
RouteToLabel pasa el segundo mensaje de entrada XML_PassengerQuery
(passengerquery2.mbtest) al nodo AllReservations.
- El nodo DecideOnQuery pasa el mensaje y el entorno local a través del terminal Out al nodo
RouteToLabel.
- El nodo RouteToLabel pasa el mensaje de entrada al nodo Label pertinente:
el nodo SinglePassenger si el nodo DecideOnQuery coloca Single Passenger en el entorno
local; el nodo AllReservations si el nodo DecideOnQuery coloca All Reservations en el
entorno local.
- 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 pasa el mensaje de entrada al nodo AllReservations, el nodo AllReservations pasa el mensaje de entrada, que contiene un nombre de pasajero, a través del terminal Out del nodo GetReservationsInformation. 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 para cada una de
las reservas que haya hecho el pasajero. El nodo GetReservationsInformation pasa luego el mensaje de salida a través del terminal Out a XML_PASSENGERQUERY_OUT.
- El nodo XML_PASSENGERQUERY_OUT transfiere el mensaje de salida a la cola XML_PASSENGERQUERY_OUT.
Volver a Acerca del Ejemplo Reserva de vuelos