XML_FlightQueryReply 메시지 플로우 작성

XML_FlightQueryReply 메시지 플로우를 작성하려면 다음 지시사항을 따르십시오. 자세한 정보는 각 단계의 끝에서 제공되는 링크를 누르십시오.

XML_FlightQueryReply 메시지 플로우를 작성하기 전에 먼저 XML_FlightQueryOut 메시지 플로우를 작성해야 합니다. 지시사항은 XML_FlightQueryOut 메시지 플로우 작성을 참조하십시오.

XML_FlightQueryReply 메시지 플로우를 작성하고 구성하려면 다음을 수행하십시오.

  1. XML_FlightQueryReply라는 새 메시지 플로우를 작성하십시오.
    지시사항은 메시지 플로우 작성을 참조하십시오.
  2. 메시지 플로우 편집기에서 다음 표에 나열된 노드를 추가하고 노드의 이름을 바꾸십시오.
    지시사항은 노드 추가를 참조하십시오.
    노드 유형 노드 이름
    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
  3. 다음 표에 표시된 대로 노드를 서로 연결하십시오.
    지시사항은 노드 연결을 참조하십시오.
    노드가 서로 올바르게 연결되었는지 점검하려면 XML_FlightQueryReply 메시지 플로우 정보에 있는 그림을 참조하십시오.
    노드 이름 터미널 연결할 대상
    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
  4. 다음 표에 표시된 대로 노드 등록 정보를 구성하십시오. 표에 대체 값이 표시된 경우를 제외하고 모든 등록 정보의 디폴트 값을 승인하십시오.
    지시사항은 노드 구성을 참조하십시오.
    노드 이름 페이지 등록 정보
    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 필드를 사용합니다.
  5. XML Airline 메시지 플로우 프로젝트에서 ESQL 파일 프로젝트를 두 번 눌러 ESQL 편집기로 열고, 다음 ESQL 코드 모듈을 ESQL 파일로 복사하여 붙여넣으십시오. 자세한 정보는 ESQL 개발을 참조하십시오.
    -- ************************************************
    -- * 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 메시지 플로우에 작동하여 특정 항공기에 대한 정보 및 항공기에 좌석을 예약한 승객에 대한 정보를 요청합니다.

기본 페이지 아이콘   Airline Reservations 샘플 빌드로 돌아가기