XML_FlightQueryReply 메시지 플로우를 작성하려면 다음 지시사항을 따르십시오. 자세한 정보는 각 단계의 끝에서 제공되는 링크를 누르십시오.
XML_FlightQueryReply 메시지 플로우를 작성하기 전에 먼저 XML_FlightQueryOut 메시지 플로우를 작성해야 합니다. 지시사항은 XML_FlightQueryOut 메시지 플로우 작성을 참조하십시오.
XML_FlightQueryReply 메시지 플로우를 작성하고 구성하려면 다음을 수행하십시오.
노드 유형 | 노드 이름 |
---|---|
MQInput | XML_FLIGHTQUERY_FLIGHT |
MQInput | XML_FLIGHTQUERY_PASSENGERS |
MQOutput | XML_FLIGHTQUERY_FAIL_1 |
MQOutput | XML_FLIGHTQUERY_FAIL_2 |
MQReply | MQMD_ReplyToQ |
Compute | GetFlightDetails |
Compute | GetPassengerDetails |
노드 이름 | 터미널 | 연결할 대상 |
---|---|---|
XML_FLIGHTQUERY_FLIGHT | Out | GetFlightDetails |
Catch | XML_FLIGHTQUERY_FAIL_1 | |
XML_FLIGHTQUERY_PASSENGERS | Out | GetPassengerDetails |
Catch | XML_FLIGHTQUERY_FAIL_2 | |
GetFlightDetails | Out | MQMD_ReplyToQ |
GetPassengerDetails | Out | MQMD_ReplyToQ |
노드 이름 | 페이지 | 등록 정보 | 값 |
---|---|---|---|
XML_FLIGHTQUERY_FLIGHT | 기본 | 큐 이름 | XML_FLIGHTQUERY_FLIGHT (메시지 플로우가 메시지를 가져오는 로컬 큐입니다.) |
디폴트 | 메시지 도메인 | XML (브로커에게 일반 XML 구문 분석기를 사용하도록 알려줍니다.) |
|
XML_FLIGHTQUERY_PASSENGERS | 기본 | 큐 이름 | XML_FLIGHTQUERY_PASSENGERS (메시지 플로우가 메시지를 가져오는 로컬 큐입니다.) |
디폴트 | 메시지 도메인 | XML (브로커에게 일반 XML 구문 분석기를 사용하도록 알려줍니다.) |
|
Get Flight Details | 기본 | 데이터 소스 | RESERVDB (이 노드에서 사용하는 데이터베이스입니다.) |
기본 | ESQL 모듈 | GetFlightDetails (처리 중에 이 노드에서 사용하는 ESQL 모듈의 이름입니다. 이 이름은 ESQL 파일의 CREATE COMPUTE MODULE문에 있는 이름과 일치해야 합니다.) |
|
Get Passenger Details | 기본 | 데이터 소스 | RESERVDB (이 노드에서 사용하는 데이터베이스입니다.) |
기본 | ESQL 모듈 | GetPassengerDetails (처리 중에 이 노드에서 사용하는 ESQL 모듈의 이름입니다. 이 이름은 ESQL 파일의 CREATE COMPUTE MODULE문에 있는 이름과 일치해야 합니다.) |
|
XML_FLIGHTQUERY_FAIL_1 | 기본 | 큐 이름 (큐가 브로커와 동일한 큐 관리자에 정의되어 있으므로 큐 관리자 이름을 지정할 필요가 없습니다.) |
XML_FLIGHTQUERY_FAIL (처리에 실패할 경우 메시지 플로우가 메시지를 넣는 곳입니다.) |
XML_FLIGHTQUERY_FAIL_2 | 기본 | 큐 이름 (큐가 브로커와 동일한 큐 관리자에 정의되어 있으므로 큐 관리자 이름을 지정할 필요가 없습니다.) |
XML_FLIGHTQUERY_FAIL (처리에 실패할 경우 메시지 플로우가 메시지를 넣는 곳입니다.) |
MQMD_ReplyToQ | 이 노드의 등록 정보를 설정할 필요가 없습니다. 노드는 메시지의 MQMD 헤더에서 ReplyToQ 및 ReplyToQMgr 필드를 사용합니다. |
-- ************************************************ -- * ESQL for the XML_FlightQueryReply message flow -- ************************************************ CREATE COMPUTE MODULE GetFlightDetails CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; SET OutputRoot.XML.FlightQuery = NULL; CREATE FIELD OutputRoot.XML.Flight; DECLARE outflight REFERENCE TO OutputRoot.XML.Flight; DECLARE query REFERENCE TO InputRoot.XML.FlightQuery; -- populate the output message with flight info from the database SET OutputRoot.XML.Flight[] = (SELECT T.* FROM Database.XMLFLIGHTTB AS T WHERE T.FLIGHTNO = query.FlightNumber AND T.FLIGHTDATE = query.FlightDate); SET outflight.STARTPOINT = TRIM(outflight.STARTPOINT); SET outflight.ENDPOINT = TRIM(outflight.ENDPOINT); RETURN TRUE; END; END MODULE; 6CREATE COMPUTE MODULE GetPassengerDetails CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; SET OutputRoot.XML.FlightQuery = NULL; CREATE FIELD OutputRoot.XML.ListOfPassengers; DECLARE outpass REFERENCE TO OutputRoot.XML.ListOfPassengers; DECLARE query REFERENCE TO InputRoot.XML.FlightQuery; -- populate the output message with passenger info from the database SET outpass.PassengerDetails[] = (SELECT T.* FROM Database.XMLPASSENGERTB AS T WHERE T.FLIGHTNO = query.FlightNumber AND T.FLIGHTDATE = query.FlightDate); DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(outpass.*[]); WHILE I <= J DO SET outpass.PassengerDetails[I].LASTNAME = TRIM(outpass.PassengerDetails[I].LASTNAME); SET outpass.PassengerDetails[I].FIRSTNAME = TRIM(outpass.PassengerDetails[I].FIRSTNAME); SET I = I + 1; END WHILE; RETURN TRUE; END; END MODULE;
이제, XML_FlightQuery 메시지 플로우의 응답 부분을 집계하는 XML_FlightQueryReply 메시지 플로우가 작성되었습니다. XML_FlightQueryReply 메시지 플로우는 XML_FlightQueryOut 및 XML_FlightQueryIn 메시지 플로우에 작동하여 특정 항공기에 대한 정보 및 항공기에 좌석을 예약한 승객에 대한 정보를 요청합니다.