XML_PassengerQuery 메시지 플로우를 작성하려면 다음 지시사항을 따르십시오. 자세한 정보는 각 단계의 끝에서 제공되는 링크를 누르십시오.
XML_PassengerQuery 메시지 플로우를 작성하고 구성하려면 다음을 수행하십시오.
노드 유형 | 노드 이름 |
---|---|
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가 들어 있습니다.
노드 이름 | 터미널 | 연결할 대상 |
---|---|---|
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 |
노드 이름 | 페이지 | 등록 정보 | 값 |
---|---|---|---|
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 (메시지 플로우가 메시지를 넣는 로컬 큐입니다.) |
-- ************************************************ -- * 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 메시지 플로우가 작성되었습니다.