Sobre o Fluxo de Mensagens XML_Reservation

O fluxo de mensagens XML_Reservation reserva assentos no vôo listado na mensagem de entrada e gera mensagens de resposta para os passageiros, para confirmar suas reservas. As mensagens de resposta são colocadas na fila XML_RESERVATION_OUT.

A figura a seguir mostra o fluxo de mensagens XML_Reservation.

Uma Captura de Tela do Fluxo de Mensagens XML_Reservation

A tabela a seguir lista os tipos de nós que são utilizados no fluxo de mensagens XML_Reservation.

Tipo de Nó Nome do Nó
MQInput XML_RESERVATION_IN
Banco de Dados UpdateFlightTable
Compute UpdatePassengerTable; BuildSingleMessage; PropagateMultipleMessages
Filter

MultipleOrSingleMessage

Throw InvalidRequest
MQOutput XML_RESERVATION_FAIL; XML_RESERVATION_OUT
Trace LogException

Para obter informações adicionais, leia sobre os nós no fluxo de mensagens XML_Reservation na documentação do WebSphere Message Broker. Para consultar o ESQL utilizado nesse fluxo de mensagens, consulte Criando o fluxo de mensagens XML_Reservation.

O fluxo de mensagens XML_Reservation executa as seguintes ações:

  1. O nó XML_RESERVATION_IN obtém a mensagem de entrada da fila XML_RESERVATION_IN e identifica a mensagem como sendo uma mensagem XML autodefinida.
  2. O nó XML_RESERVATION_IN analisa completamente a mensagem utilizando o analisador XML, então, transmite a mensagem de entrada, através do terminal de Saída, ao nó UpdateFlightTable. Como alternativa, se houver uma exceção lançada no recebimento de dados e a mensagem for retrocedida, o nó transmitirá a mensagem de entrada, através do terminal Capturar, ao nó XML_RESERVATION_FAIL, que transmite a mensagem para o nó LogException. O nó LogException, então, grava o erro no registro de erros local, que é o Visualizador de Eventos no Windows ou o syslog no Linux.
  3. O nó UpdateFlightTable verifica a tabela XMLFLIGHTTB para ver se os assentos solicitados estão disponíveis, então, atualiza a tabela XMLFLIGHTTB para mostrar que os assentos estão sendo alocados e agora menos assentos estão disponíveis.
  4. O nó UpdateFlightTable insere o valor de RESERVATIONSEQNO da tabela XMLFLIGHTTB em uma Variável de Ambiente, que é transmitida para o nó UpdatePassengerTable. O nó UpdatePassengerTable também coloca em uma Variável de Ambiente o número de assentos restantes em cada classe.
  5. O nó UpdateFlightTable transmite a mensagem de entrada, através do terminal Saída, para o nó UpdatePassengerTable.
  6. O nó UpdatePassengerTable obtém a lista de passageiros da mensagem de entrada e os dados do vôo na árvore Ambiente e inclui os nomes e informações sobre reservas dos novos passageiros na tabela XMLPASSENGERTB no banco de dados RESERVDB.
  7. O nó UpdatePassengerTable cria e designa um número de reserva exclusivo a cada passageiro. O número de reserva é composto de:

    FlightNumber + FlightDate + RESERVATIONSEQNO

    O valor de RESERVATIONSEQNO é obtido da variável de Ambiente recebida do nó UpdateFlightTable. Por exemplo, o Número de Reserva de Mary Smith é CA937200305251. O nó UpdateFlightTable atualiza a tabela XMLPASSENGERTB com esses números de reserva.

  8. O nó UpdatePassengerTable transmite a mensagem de entrada, através do terminal Saída, para o nó MultipleOrSingleMessage.
  9. O nó MultipleOrSingleMessage verifica o campo de mensagem de entrada chamado Request e determina onde transmitir a mensagem:
  10. Se a mensagem for para o nó PropagateMultipleMessages, o nó PropagateMultipleMessages criará uma mensagem de resposta para um dos passageiros listados na mensagem de entrada e, em seguida, transmitirá a resposta, através do terminal Saída, para o nó XML_RESERVATION_OUT. O nó PropagateMultipleMessages cria uma mensagem de resposta como esta para cada passageiro listado na mensagem de entrada.
  11. Se a mensagem for para o nó BuildSingleMessage, o nó BuildSingleMessage criará uma única mensagem de resposta contendo uma lista dos passageiros e seus números de reserva, então, transmitirá a resposta, através do terminal Saída, para o nó XML_RESERVATION_OUT.
  12. O nó XML_RESERVATION_OUT coloca as mensagens de resposta na fila XML_RESERVATION_OUT.

As mensagens de entrada para o fluxo de mensagens XML_Reservation manipulam os dados no banco de dados RESERVDB. Essas manipulações incluem a adição de dados à tabela XMLPASSENGERTB. Os outros fluxos de mensagens recuperam alguns dos dados armazenados no banco de dados RESERVDB pelo fluxo de mensagens XML_Reservation. Para que haja dados suficientes armazenados no banco de dados para os outros fluxos de mensagens consultarem, duas mensagens de entrada são fornecidas para executar o fluxo de mensagens XML_Reservation. Você deve executar XML_Reservation com as duas mensagens antes de executar qualquer outro fluxo de mensagens.

Sugestão de Design: Utilizando um Único Nó Compute

O fluxo de mensagens XML_Reservation tem dois nós separados para atualizar as tabelas XMLFLIGHTTB e XMLPASSENGERTB no banco de dados RESERVDB:

UpdateFlightTable atualiza XMLFLIGHTTB com o número de reservas solicitadas para um determinado vôo. Ele coloca os detalhes do vôo na árvore Ambiente para transmitir ao nó UpdatePassengerTable. O nó UpdatePassengerTable atualiza XMLPASSENGERTB com os detalhes dos passageiros que fizeram as reservas e inclui seus números de reserva exclusivos. Em seguida, o nó inclui os números de reserva exclusivos dos passageiros na mensagem.

É possível combinar os dois nós em um único nó Compute para aprimorar o desempenho do fluxo de mensagens. No entanto, você não pode combiná-los em um único nó Database porque o nó Database não pode fazer alterações na mensagem. O fluxo de mensagens mostrado aqui utiliza dois nós separados para mostrar o que os nós Compute e Database podem fazer.

Ícone Página Principal   Voltar para Sobre a Amostra Reservas Aéreas