XML_PassengerQuery 메시지 플로우 정보
XML_PassengerQuery 메시지 플로우는 입력 메시지에 지정된 승객의 예약 세부사항을
검색합니다. 출력 메시지의 정보 유형은 입력 메시지에서 제공하는 정보에 따라 다릅니다.
- 입력 메시지가 예약 번호만 제공할 경우, 메시지는 SinglePassenger 경로를 따르고 출력 메시지는 예약 번호가 연관된 항공기에 대한 정보만 포함합니다.
- 입력 메시지가 승객의 이름만 제공할 경우, 메시지는 AllReservations 경로를 따르고 출력 메시지는 승객이 예약한 모든 항공기에 대한 정보를 포함합니다. 이 경우, 승객의 전체 이름이 고유하다고 가정합니다. 이러한 상황은 현실적이지는 않지만
샘플을 간소화합니다.
메시지 플로우는 특정 경로를 따라 메시지를 라우트하기 위해 참/거짓의 Boolean 결과가 있어야 하는 Filter 노드의 체인을 작성할 필요없이
메시지 자체의 정보에 기초하여 메시지를 동적으로 라우트하는 RouteToLabel 및 Label 노드를 사용합니다.
설명된 두 가지 유형의 정보 검색을 예시하기 위해 XML_PassengerQuery 메시지 플로우를 실행할 두 개의 입력 메시지가 제공됩니다.
다음 그림은 XML_PassengerQuery 메시지 플로우를 보여줍니다.

다음 표는 XML_PassengerQuery 메시지 플로우에 사용된 노드 유형을 나열합니다.
노드 유형 |
노드 이름 |
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 |
자세한 정보는 WebSphere Message Broker 문서에 있는
XML_PassengerQuery 메시지 플로우의 노드를
읽으십시오. 이 메시지 플로우에 사용된 ESQL을 보려면 XML_PassengerQuery 메시지 플로우 작성을 참조하십시오.
XML_PassengerQuery 메시지 플로우는 다음 조치를 수행합니다.
- XML_PASSENGERQUERY_IN 노드는 XML_PASSENGERQUERY_IN 큐에서 입력 메시지를 가져와 이 입력 메시지를 XML 도메인에 있는 메시지로 식별합니다. 따라서 메시지 플로우는 XML 구문 분석기를 사용하여 메시지를 구문 분석해야 합니다.
- XML_PASSENGERQUERY_IN 노드는 메시지를 DecideOnQuery 노드로 전달합니다. 또는
- 입력 메시지를 식별하는 데 문제가 있는 경우, 노드는 Failure 터미널을 통해 XML_PASSENGERQUERY_FAIL_1 노드로 메시지를 전달하고, 이 노드는 메시지를 XML_PASSENGERQUERY_FAIL 큐에 넣습니다.
- 다운스트림으로 예외가 발생하고 메시지가 롤백된 경우, XML_PASSENGERQUERY_IN 노드는 Catch 터미널을 통해 XML_PASSENGERQUERY_FAIL_2 노드로 메시지를 전달하고, 이 노드는 메시지를 XML_PASSENGERQUERY_FAIL 큐에 넣습니다.
- DecideOnQuery 노드는 메시지가 메시지 플로우를 통해 가야 하는 경로를 결정합니다.
메시지가 취하는 경로는 메시지에 제공된 정보 유형에 의해 좌우됩니다. 노드는 목적지 정보와 함께 로컬 환경을 갱신합니다.
- 메시지에 예약 번호만 들어 있는 경우, 노드는 LocalEnvironment에 Single Passenger를 넣습니다. 이는 RouteToLabel 노드가 첫 번째 XML_PassengerQuery 입력 메시지(passengerquery1.enqueue)를 SinglePassenger 노드로 전달하는 것을 의미합니다.
- 메시지에 승객의 전체 이름이 들어 있는 경우, 노드는 LocalEnvironment에 All Reservations를 넣습니다. 이는 RouteToLabel 노드가 두 번째 XML_PassengerQuery 입력 메시지(passengerquery2.enqueue)를 AllReservations 노드로 전달하는 것을 의미합니다.
- DecideOnQuery 노드는 Out 터미널을 통해 RouteToLabel 노드로 메시지와 로컬 환경을 전달합니다.
- RouteToLabel 노드는 관련 Label 노드에 입력 메시지를 전달합니다(DecideOnQuery 노드가 LocalEnvironment에
단일 승객을 넣은 경우에는 SinglePassenger 노드, DecideOnQuery 노드가 LocalEnvironment에
모든 예약을 넣은 경우에는 AllReservations 노드).
- RouteToLabel 노드가 입력 메시지를 SinglePassenger 노드로 전달하면, SinglePassenger 노드는
Out 터미널을 통해 GetPassengerInformation 노드로 예약 번호가 들어 있는 이 입력 메시지를 전달합니다. GetPassengerInformation
노드는 RESERVDB 데이터베이스의 XMLPASSENGERTB 테이블에서 예약 번호를 찾은 후, 예약 번호, 승객의 전체 이름,
항공기 번호, 비행 날짜 및 좌석 등급을 포함하여 XMLPASSENGERTB 테이블에서 찾은 정보로부터 출력 메시지를
빌드합니다. 그런 다음, GetPassengerInformation 노드는 Out 터미널을 통해 XML_PASSENGERQUERY_OUT 노드로 출력 메시지를 전달합니다.
- RouteToLabel 노드가 입력 메시지를 AllReservations 노드로 전달하면, AllReservations 노드는
Out 터미널을 통해 GetReservationsInformation 노드로 승객의 이름이 들어 있는 입력 메시지를 전달합니다. GetReservationsInformation 노드는 RESERVDB 데이터베이스의 XMLPASSENGERTB 테이블에서 승객의 이름을 찾은 후,
승객의 전체 이름과 승객이 예약한 각 항공기 번호, 비행 날짜 및 좌석 등급을 포함하여 XMLPASSENGERTB 테이블에서
찾은 정보로부터 출력 메시지를 빌드합니다. 그런 다음, GetReservationsInformation 노드는 Out
터미널을 통해 XML_PASSENGERQUERY_OUT 노드로 출력 메시지를 전달합니다.
- XML_PASSENGERQUERY_OUT 노드는 출력 메시지를 XML_PASSENGERQUERY_OUT 큐에 넣습니다.
Airline Reservations 샘플 정보로 돌아가기