XML_PassengerQuery 메시지 플로우 작성

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

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

  1. XML_PassengerQuery라는 새 메시지 플로우를 작성하십시오.
    지시사항은 메시지 플로우 작성을 참조하십시오.
  2. 메시지 플로우 편집기에서 다음 표에 나열된 노드를 추가하고 노드의 이름을 바꾸십시오.
    지시사항은 노드 추가를 참조하십시오.
    노드 유형 노드 이름
    MQInput XML_PASSENGERQUERY_IN
    MQOutput XML_PASSENGERQUERY_OUT
    MQOutput XML_PASSENGERQUERY_FAIL_1
    MQOutput XML_PASSENGERQUERY_FAIL_2
    Compute DecideOnQuery
    Compute GetPassengerInformation
    Compute GetReservationsInformation
    Label SinglePassenger
    Label AllReservations
    RouteToLabel RouteToLabel

    RouteToLabel 노드는 메시지와 연관된 로컬 환경의 컨텐츠에 근거하여 동적으로 메시지를 라우트합니다. 로컬 환경에는 레이블 이름 등록 정보(노드 이름이 아님)로 식별되는 하나 이상의 대상 Label 노드의 ID가 들어 있습니다.

  3. 다음 표에 표시된 대로 노드를 서로 연결하십시오.
    지시사항은 노드 연결을 참조하십시오.
    노드가 서로 올바르게 연결되었는지 점검하려면 XML_PassengerQuery 메시지 플로우 정보에 있는 그림을 참조하십시오.
    노드 이름 터미널 연결할 대상
    XML_PASSENGERQUERY_IN Failure XML_PASSENGERQUERY_FAIL_1
    Out DecideOnQuery
    Catch XML_PASSENGERQUERY_FAIL_2
    DecideOnQuery Out RouteToLabel
    SinglePassenger Out GetPassengerInformation
    AllReservations Out GetReservationsInformation
    GetPassengerInformation Out XML_PASSENGERQUERY_OUT
    GetReservationsInformation Out XML_PASSENGERQUERY_OUT
  4. 다음 표에 표시된 대로 노드 등록 정보를 구성하십시오. 표에 대체 값이 표시된 경우를 제외하고 모든 등록 정보의 디폴트 값을 승인하십시오.
    지시사항은 노드 구성을 참조하십시오.
    노드 이름 페이지 등록 정보
    XML_PASSENGERQUERY_IN 기본 큐 이름 XML_PASSENGERQUERY_IN
    (메시지 플로우가 메시지를 가져오는 로컬 큐입니다.)
    디폴트 메시지 도메인 XML
    (브로커에게 일반 XML 구문 분석기를 사용하도록 알려줍니다.)
    XML_PASSENGERQUERY_FAIL_1 기본 큐 이름
    (큐가 브로커와 동일한 큐 관리자에 정의되어 있으므로 큐 관리자 이름을 지정할 필요가 없습니다.)
    XML_PASSENGERQUERY_FAIL
    (처리에 실패할 경우에 메시지 플로우가 메시지를 넣는 로컬 큐입니다.)
    XML_PASSENGERQUERY_FAIL_2 기본 큐 이름
    (큐가 브로커와 동일한 큐 관리자에 정의되어 있으므로 큐 관리자 이름을 지정할 필요가 없습니다.)
    XML_PASSENGERQUERY_FAIL
    (처리에 실패할 경우에 메시지 플로우가 메시지를 넣는 로컬 큐입니다.)
    DecideOnQuery 기본 ESQL 모듈 DecideOnQuery
    (처리 중에 이 노드에서 사용하는 ESQL 모듈의 이름입니다. 이 이름은 ESQL 파일의 CREATE COMPUTE MODULE문에 있는 이름과 일치해야 합니다.)
    기본 처리 모드 LocalEnvironment 및 Message
    (이는 로컬 환경 및 메시지가 수정된 RouteToLabel 노드로 전달되게 합니다.)
    RouteToLabel 기본 모드 첫 번째로 라우트
    (이는 RouteToLabel 노드가 목록의 맨 위에 있는 첫 번째 항목에서부터 목적지 목록 처리를 시작하도록 합니다.)
    SinglePassenger 기본 레이블 이름 SinglePassenger
    (메시지 플로우가 메시지를 전달하는 Label 노드의 이름입니다. 이 이름은 Decide On The Query 노드의 레이블 이름 세트와 일치해야 합니다. 아래의 Decide_on_query 모듈에 있는 ESQL을 참조하십시오.)
    AllReservations 기본 레이블 이름 AllReservations
    (메시지 플로우가 메시지를 전달하는 Label 노드의 이름입니다. 이 이름은 Decide On The Query 노드의 레이블 이름 세트와 일치해야 합니다. 아래의 Decide_on_query 모듈에 있는 ESQL을 참조하십시오.)
    GetPassengerInformation 기본 데이터 소스 RESERVDB
    (이 노드에서 사용하는 데이터베이스입니다.)
    기본 ESQL 모듈 GetPassengerInformation
    (처리 중에 이 노드에서 사용하는 ESQL 모듈의 이름입니다. 이 이름은 ESQL 파일의 CREATE COMPUTE MODULE문에 있는 이름과 일치해야 합니다.)
    기본 처리 모드 LocalEnvironment 및 Message
    (이는 로컬 환경 및 메시지가 수정된 후 XML_PASSENGERQUERY_OUT 노드로 전달되게 합니다.)
    GetReservationsInformation 기본 데이터 소스 RESERVDB
    (이 노드에서 사용하는 데이터베이스입니다.)
    기본 ESQL 모듈 GetReservationsInformation
    (처리 중에 이 노드에서 사용하는 ESQL 모듈의 이름입니다. 이 이름은 ESQL 파일의 CREATE COMPUTE MODULE문에 있는 이름과 일치해야 합니다.)
    기본 처리 모드 LocalEnvironment 및 Message
    (이는 로컬 환경 및 메시지가 수정된 후 XML_PASSENGERQUERY_OUT 노드로 전달되게 합니다.)
    XML_PASSENGERQUERY_OUT 기본 큐 이름
    (큐가 브로커와 동일한 큐 관리자에 정의되어 있으므로 큐 관리자 이름을 지정할 필요가 없습니다.)
    XML_PASSENGERQUERY_OUT
    (메시지 플로우가 메시지를 넣는 로컬 큐입니다.)
  5. XML Airline 메시지 플로우 프로젝트에서 ESQL 파일 프로젝트를 두 번 눌러 ESQL 편집기로 열고, 다음 ESQL 코드 모듈을 ESQL 파일로 복사하여 붙여넣으십시오. 자세한 정보는 ESQL 개발을 참조하십시오.
    -- ************************************************
    -- * ESQL for the XML_PassengerQuery message flow
    -- ************************************************
    
    CREATE COMPUTE MODULE DecideOnQuery
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		IF InputRoot.XML.PassengerQuery.ReservationNumber <> '' THEN
    			SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname = 'SinglePassenger';
    		ELSE
    			SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname = 'AllReservations';
    		END IF;
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetPassengerInformation
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XML.PassengerQuery = NULL;
    		-- populate the environment with passenger info from the database
    		SET Environment.Variables =
    			THE (SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.RESERVATIONNO = InputRoot.XML.PassengerQuery.ReservationNumber);
    
    		-- populate the output message with info from the database query
    		CREATE FIELD OutputRoot.XML.PassengerInfoResponse.PassengerInfo;
    		DECLARE outpass REFERENCE TO OutputRoot.XML.PassengerInfoResponse.PassengerInfo;
    		SET outpass.ReservationNumber = Environment.Variables.RESERVATIONNO;
    		SET outpass.FirstName = Environment.Variables.FIRSTNAME;
    		SET outpass.LastName = Environment.Variables.LASTNAME;
    		SET outpass.FlightNumber = Environment.Variables.FLIGHTNO;
    		SET outpass.Date = Environment.Variables.FLIGHTDATE;
    		SET outpass.Class = Environment.Variables.CLASSTYPE;
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetReservationsInformation
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XML.PassengerQuery = NULL;
    		-- populate the environment with reservations info from the database
    		SET Environment.Variables.Reservation[] =
    			(SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.FIRSTNAME = InputRoot.XML.PassengerQuery.FirstName 
    				AND T.LASTNAME = InputRoot.XML.PassengerQuery.LastName);
    
    		-- populate the output message with info from the database query
    		CREATE FIELD OutputRoot.XML.PassengerInfoResponse.ListOfReservations;
    		DECLARE outres REFERENCE TO OutputRoot.XML.PassengerInfoResponse.ListOfReservations;
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER CARDINALITY(Environment.Variables.*[]);
    		WHILE I <= J DO
    			SET outres.Reservation[I].FlightNumber = Environment.Variables.Reservation[I].FLIGHTNO;
    			SET outres.Reservation[I].Date = Environment.Variables.Reservation[I].FLIGHTDATE;
    			SET outres.Reservation[I].Class = Environment.Variables.Reservation[I].CLASSTYPE;
    			SET I = I + 1;
    		END WHILE;
    		RETURN TRUE;
    	END;
    END MODULE;

이제 항공기에 좌석을 예약한 특정 승객에 정보를 검색하는 XML_PassengerQuery 메시지 플로우가 작성되었습니다.

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