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; CREATE 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_FlightQueryReply メッセージ・フローの作成が終わりました。このメッセージ・フローは、XML_FlightQuery メッセージ・フローの集約応答の部分です。 XML_FlightQueryReply メッセージ・フローは、XML_FlightQueryOut および XML_FlightQueryIn メッセージ・フローと連動して、特定のフライトおよびそのフライトの座席を予約した乗客に関する情報を要求します。