XML_FlightQueryIn メッセージ・フローを作成するには、次のようにします。 詳細な指示については、各ステップの終わりにあるリンクをクリックしてください。
XML_FlightQueryReply メッセージ・フローを作成するためには、まず、XML_FlightQueryOut メッセージ・フローと XML_FlightQueryReply メッセージ・フローを作成する必要があります。 その方法については、XML_FlightQueryOut メッセージ・フローの作成、および XML_FlightQueryReply メッセージ・フローの作成を参照してください。
XML_FlightQueryIn メッセージ・フローを作成および構成するには、次のようにします。
ノードのタイプ | ノード名 |
---|---|
MQInput | XML_FLIGHTQUERY_REPLIES |
MQOutput | XML_FLIGHTQUERY_OUT |
MQOutput | XML_FLIGHTQUERY_TIMEOUT |
MQOutput | XML_FLIGHTQUERY_FAIL |
Compute | BuildOutputMessage |
Compute | ProcessTimeout |
AggregateReply | AggregateReplies |
ノード名 | ターミナル | 接続先 |
---|---|---|
XML_FLIGHTQUERY_REPLIES | Out | AggregateReplies (In ターミナル) |
Catch | XML_FLIGHTQUERY_FAIL | |
AggregateReplies | Out | BuildOutputMessage |
Timeout | ProcessTimeout | |
BuildOutputMessage | Out | XML_FLIGHTQUERY_OUT |
ProcessTimeout | Out | XML_FLIGHTQUERY_TIMEOUT |
ノード名 | ページ | プロパティー | 値 |
---|---|---|---|
XML_FLIGHTQUERY_REPLIES | 基本 | キュー名 | XML_FLIGHTQUERY_REPLIES (これは、XML_FlightQueryOut によって制御メッセージが書き込まれたキューです。) |
デフォルト | メッセージ・ドメイン | XML (これは、汎用 XML パーサーを使用するようにブローカーに指示します。) |
|
Aggregate Replies | 基本 | 集約名 | FLIGHTDETAILSAGG (この名前は、FlightQuery_Out メッセージ・フローの Request Details ノードの「集合名」プロパティーと一致していなければなりません。) |
基本 | 不明なメッセージ・タイムアウト | 60 (これは応答として識別できないメッセージが、Unknown ターミナルに伝搬されるまでに保持される時間の長さです。) |
|
Build output message | 基本 | ESQL モジュール | BuildOutputMessage (これは、処理中にこのノードによって使用される ESQL モジュールの名前です。 この名前は、ESQL ファイル中の CREATE COMPUTE MODULE ステートメント中の名前と一致していなければなりません。) |
XML_FLIGHTQUERY_OUT | 基本 | キュー名 (キューはブローカーと同じキュー・マネージャーで定義されるので、キュー・マネージャーの名前を指定する必要はありません。) |
XML_FLIGHTQUERY_OUT (これは、メッセージ・フローがメッセージを書き込むローカル・キューです。) |
Process timeout | 基本 | ESQL モジュール | ProcessTimeout (これは、処理中にこのノードによって使用される ESQL モジュールの名前です。 この名前は、ESQL ファイル中の CREATE COMPUTE MODULE ステートメント中の名前と一致していなければなりません。) |
XML_FLIGHTQUERY_TIMEOUT | 基本 | キュー名 |
XML_FLIGHTQUERY_TIMEOUT (これは、XML_FlightQueryOut メッセージ・フロー中の Request Details ノード中に指定されたタイムアウトの前に、Aggregate Replies ノードに達しない応答メッセージがある場合に、メッセージ・フローが未完成の集約メッセージを書き込むローカル・キューです。) |
XML_FLIGHTQUERY_FAIL | 基本 | キュー名 (キューはブローカーと同じキュー・マネージャーで定義されるので、キュー・マネージャーの名前を指定する必要はありません。) |
XML_FLIGHTQUERY_FAIL (これは、処理が失敗した場合にメッセージ・フローがメッセージを書き込む場所です。) |
-- ************************************************ -- * ESQL for the XML_FlightQueryIn message flow -- ************************************************ CREATE COMPUTE MODULE BuildOutputMessage CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN -- fix the aggregate reply message for output to a queue SET OutputRoot.Properties = InputRoot.Properties; CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD'; SET OutputRoot.MQMD.StrucId = MQMD_STRUC_ID; SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; DECLARE inflight REFERENCE TO InputRoot.ComIbmAggregateReplyBody.FlightDetails.XML.Flight; DECLARE inpass REFERENCE TO InputRoot.ComIbmAggregateReplyBody.PassengerDetails.XML.ListOfPassengers; CREATE FIELD OutputRoot.XML.FlightDetailsInfoResponse; DECLARE outresp REFERENCE TO OutputRoot.XML.FlightDetailsInfoResponse; -- populate the output message with flight info from the aggregate reply CREATE FIRSTCHILD OF outresp.Flight TYPE NameValue NAME 'number' VALUE inflight.FLIGHTNO; SET outresp.Flight.(XML.Attribute)Flightdate VALUE = inflight.FLIGHTDATE; SET outresp.Flight.FirstClass.Capacity = inflight.TOTALFIRST; SET outresp.Flight.FirstClass.Used = inflight.FIRSTCLASS; SET outresp.Flight.FirstClass.Price = inflight.FIRSTPRICE; SET outresp.Flight.EconomyClass.Capacity = inflight.TOTALECONOMIC; SET outresp.Flight.EconomyClass.Used = inflight.ECONOMICCLASS; SET outresp.Flight.EconomyClass.Price = inflight.ECONOMICPRICE; SET outresp.Flight.Origin = inflight.STARTPOINT; SET outresp.Flight.Destination = inflight.ENDPOINT; -- populate the output message with passenger info from the aggregate reply DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(inpass.*[]); WHILE I <= J DO SET outresp.ListOfPassengers.Passenger[I].ReservationNumber = inpass.PassengerDetails[I].RESERVATIONNO; SET outresp.ListOfPassengers.Passenger[I].FirstName = inpass.PassengerDetails[I].FIRSTNAME; SET outresp.ListOfPassengers.Passenger[I].LastName = inpass.PassengerDetails[I].LASTNAME; SET outresp.ListOfPassengers.Passenger[I].Class = inpass.PassengerDetails[I].CLASSTYPE; SET I = I + 1; END WHILE; RETURN TRUE; END; END MODULE; CREATE COMPUTE MODULE ProcessTimeout CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot.Properties = InputRoot.Properties; CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD'; SET OutputRoot.MQMD.StrucId = MQMD_STRUC_ID; SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; CREATE FIELD OutputRoot.XML.ComIbmAggregateReplyBody; DECLARE timedout REFERENCE TO OutputRoot.XML.ComIbmAggregateReplyBody; DECLARE reps REFERENCE TO InputRoot.ComIbmAggregateReplyBody; MOVE reps FIRSTCHILD; IF LASTMOVE(reps) THEN -- there will either be one reply, or none SET timedout.TimedOut = reps.XML; END IF; RETURN TRUE; END; END MODULE;
これで、XML_FlightQueryIn メッセージ・フローの作成が終わりました。このメッセージ・フローは、XML_FlightQuery メッセージ・フローの集約ファンイン部分です。 XML_FlightQueryIn メッセージ・フローは、XML_FlightQueryOut および XML_FlightQueryReply メッセージ・フローと連動して、特定のフライトおよびそのフライトの座席を予約した乗客に関する情報を要求します。