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;
    
    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 メッセージ・フローと連動して、特定のフライトおよびそのフライトの座席を予約した乗客に関する情報を要求します。

メインページのアイコン   『Airline Reservations サンプルのビルド』に戻る