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 ノードは、メッセージに関連付けられた LocalEnvironment の内容に基づいて、メッセージを動的に経路指定します。 LocalEnvironment には、(ノード名ではなく) 「ラベル名」プロパティーによって識別される 1 つ以上の宛先 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 ステートメント中の名前と一致していなければなりません。) |
基本 | Compute モード (Compute Mode) | LocalEnvironment and Message (この値は、LocalEnvironment に加えてメッセージも、変更後に RouteToLabel ノードに渡されます。) |
|
RouteToLabel | 基本 | モード (Mode) | Route to First (これにより、RouteToLabel ノードが宛先のリストの処理を、リストの先頭の最初の項目から開始するようになります。) |
SinglePassenger | 基本 | ラベル名 (Label Name) | SinglePassenger (これは、メッセージ・フローがメッセージを受け渡す Label ノードの名前です。 この名前は、Decide On The Query ノード中のラベル名セットと一致していなければなりません。 下記の Decide_on_query モジュールの ESQL を参照してください。) |
AllReservations | 基本 | ラベル名 (Label Name) | AllReservations (これは、メッセージ・フローがメッセージを受け渡す Label ノードの名前です。 この名前は、Decide On The Query ノード中のラベル名セットと一致していなければなりません。 下記の Decide_on_query モジュールの ESQL を参照してください。) |
GetPassengerInformation | 基本 | データ・ソース | RESERVDB (これは、このノードで使用されるデータベースです。) |
基本 | ESQL モジュール | GetPassengerInformation (これは、処理中にこのノードによって使用される ESQL モジュールの名前です。 この名前は、ESQL ファイル中の CREATE COMPUTE MODULE ステートメント中の名前と一致していなければなりません。) |
|
基本 | Compute モード (Compute Mode) | LocalEnvironment and Message (この値は、LocalEnvironment に加えてメッセージも、変更後に XML_PASSENGERQUERY_OUT ノードに渡されます。) |
|
GetReservationsInformation | 基本 | データ・ソース | RESERVDB (これは、このノードで使用されるデータベースです。) |
基本 | ESQL モジュール | GetReservationsInformation (これは、処理中にこのノードによって使用される ESQL モジュールの名前です。 この名前は、ESQL ファイル中の CREATE COMPUTE MODULE ステートメント中の名前と一致していなければなりません。) |
|
基本 | Compute モード (Compute Mode) | LocalEnvironment and Message (この値は、LocalEnvironment に加えてメッセージも、変更後に 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 メッセージ・フローの作成が終わりました。このメッセージ・フローはフライトの座席を予約した特定の乗客に関する情報を取り出します。