XML_Reservation 메시지 플로우 정보

XML_Reservation 메시지 플로우는 입력 메시지에 나열된 항공기에 좌석을 예약하고, 승객이 예약을 확인할 수 있도록 응답 메시지를 생성합니다. 응답 메시지는 XML_RESERVATION_OUT 큐에 넣어집니다.

다음 그림은 XML_Reservation 메시지 플로우를 보여줍니다.

XML_Reservation 메시지 플로우의 화면 캡처

다음 표는 XML_Reservation 메시지 플로우에 사용된 노드 유형을 나열합니다.

노드 유형 노드 이름
MQInput XML_RESERVATION_IN
Database UpdateFlightTable
Compute UpdatePassengerTable; BuildSingleMessage; PropagateMultipleMessages
Filter

MultipleOrSingleMessage

Throw InvalidRequest
MQOutput XML_RESERVATION_FAIL; XML_RESERVATION_OUT
Trace LogException

자세한 정보는 WebSphere Message Broker 문서에 있는 XML_Reservation 메시지 플로우의 노드를 읽으십시오. 이 메시지 플로우에 사용된 ESQL을 보려면 XML_Reservation 메시지 플로우 작성을 참조하십시오.

XML_Reservation 메시지 플로우는 다음 조치를 수행합니다.

  1. XML_RESERVATION_IN 노드는 XML_RESERVATION_IN 큐에서 입력 메시지를 가져와 이 메시지를 자체 정의 XML 메시지로 식별합니다.
  2. XML_RESERVATION_IN 노드는 XML 구문 분석기를 사용하여 메시지를 구문 분석한 후 Out 터미널을 통해 UpdateFlightTable 노드로 이 입력 메시지를 전달합니다. 또는 다운스트림으로 예외가 발생되고 메시지가 롤백된 경우, 노드는 Catch 터미널을 통해 XML_RESERVATION_FAIL 노드로 입력 메시지를 전달하고, 이 노드는 메시지를 LogException 노드로 전달합니다. 그런 다음, LogException 노드는 Windows의 경우 이벤트 뷰어 또는 Linux의 경우 syslog인 로컬 오류 로그에 오류를 씁니다.
  3. UpdateFlightTable 노드는 XMLFLIGHTTB 테이블을 점검하여 요청된 좌석이 예약 가능한지 확인한 후 XMLFLIGHTTB 테이블을 갱신하여 좌석이 할당 중이며 현재 예약 가능한 좌석이 감소됨을 보여줍니다.
  4. UpdateFlightTable 노드는 XMLFLIGHTTB 테이블의 RESERVATIONSEQNO 값을 Environment 변수로 삽입되고, 이는 UpdatePassengerTable 노드로 전달됩니다. UpdateFlightTable 노드는 또한 각 좌석 등급에 남아 있는 좌석 수를 Environment 변수에 넣습니다.
  5. UpdateFlightTable 노드는 Out 터미널을 통해 UpdatePassengerTable 노드로 입력 메시지를 전달합니다.
  6. UpdatePassengerTable 노드는 입력 메시지에서 승객 목록과 환경 트리에서 항공기 데이터를 가져와 새 승객의 이름 및 예약 정보를 RESERVDB 데이터베이스의 XMLPASSENGERTB 테이블에 추가합니다.
  7. UpdatePassengerTable 노드는 각 승객에게 고유 예약 번호를 작성하여 지정합니다. 예약 번호는 다음을 기초로 작성됩니다.

    FlightNumber + FlightDate + RESERVATIONSEQNO

    RESERVATIONSEQNO의 값은 UpdateFlightTable 노드에서 수신한 Environment 변수에서 얻습니다. 예를 들어, Mary Smith의 예약 번호는 CA937200305251입니다. UpdatePassengerTable 노드는 이 예약 번호로 XMLPASSENGERTB 테이블을 갱신합니다.

  8. UpdatePassengerTable 노드는 Out 터미널을 통해 MultipleOrSingleMessage 노드로 입력 메시지를 전달합니다.
  9. MultipleOrSingleMessage 노드는 Request라는 입력 메시지 필드를 점검하여 이 메시지를 전달할 다음 위치를 판별합니다.
  10. 메시지가 PropagateMultipleMessages 노드로 전달되면, PropagateMultipleMessages 노드는 입력 메시지에 나열된 승객 중 하나에 대한 응답 메시지를 작성한 후, Out 터미널을 통해 XML_RESERVATION_OUT 노드로 이 응답을 전달합니다. PropagateMultipleMessages 노드는 입력 메시지에 나열된 각 승객에 대해 이와 같은 응답 메시지를 작성합니다.
  11. 메시지가 BuildSingleMessage 노드로 전달되면, BuildSingleMessage 노드는 승객 및 예약 번호 목록이 있는 단일 응답 메시지를 작성한 후, Out 터미널을 통해 XML_RESERVATION_OUT 노드로 이 응답을 전달합니다.
  12. XML_RESERVATION_OUT 노드는 응답 메시지를 XML_RESERVATION_OUT 큐에 넣습니다.

XML_Reservation 메시지 플로우의 입력 메시지는 RESERVDB 데이터베이스의 데이터를 조작합니다. 이러한 조작에는 XMLPASSENGERTB 테이블에 데이터를 추가하는 것이 포함됩니다. 다른 메시지 플로우는 XML_Reservation 메시지 플로우가 RESERVDB 데이터베이스에 저장한 데이터의 일부를 검색합니다. 데이터베이스에 다른 메시지 플로우가 조회할 수 있을 만큼 충분한 데이터가 저장되도록 하기 위해 두 개의 입력 메시지가 제공되어 XML_Reservation 메시지 플로우를 실행합니다. 다른 메시지 플로우를 실행하기 전에 두 메시지로 XML_Reservation을 실행해야 합니다.

설계 제안: 단일 Compute 노드 사용

XML_Reservation 메시지 플로우에는 RESERVDB 데이터베이스의 XMLFLIGHTTB 테이블과 XMLPASSENGERTB 테이블을 갱신하기 위한 두 개의 개별 노드가 있습니다.

UpdateFlightTable은 특정 항공기에 대해 요청된 예약 수로 XMLFLIGHTTB를 갱신합니다. 항공기 세부사항을 환경 트리에 넣어 UpdatePassengerTable 노드로 전달합니다. UpdatePassengerTable 노드는 예약한 승객의 세부사항으로 XMLPASSENGERTB를 갱신한 후, 해당 고유 예약 번호를 추가합니다. 그런 다음, 노드는 승객의 고유 예약 번호를 메시지에 추가합니다.

메시지 플로우의 성능을 향상시키기 위해 단일 Compute 노드로 두 개의 노드를 결합하는 것이 가능합니다. 그러나 단일 Database 노드는 메시지를 변경할 수 없으므로 단일 Database 노드로 결합할 수 없습니다. 여기에 표시된 메시지 플로우는 Compute 및 Database 노드의 역할을 표시하기 위해 두 개의 개별 노드를 사용합니다.

기본 페이지 아이콘   Airline Reservations 샘플 정보로 돌아가기