XML_FlightQueryIn メッセージ・フローを作成するには、次のようにします。 詳細な指示については、各ステップの終わりにあるリンクをクリックしてください。
XML_FlightQueryReply メッセージ・フローを作成するためには、まず、XML_FlightQueryOut メッセージ・フローと XML_FlightQueryReply メッセージ・フローを作成する必要があります。 その方法については、XML_FlightQueryOut メッセージ・フローの作成、および XML_FlightQueryReply メッセージ・フローの作成を参照してください。
XML_FlightQueryIn メッセージ・フローを作成および構成するには、次のようにします。
パレット・ドロワー | ノードのタイプ | ノード名 |
---|---|---|
WebSphere MQ | MQInput | XML_FLIGHTQUERY_REPLIES |
WebSphere MQ | MQOutput | XML_FLIGHTQUERY_OUT |
WebSphere MQ | MQOutput | XML_FLIGHTQUERY_TIMEOUT |
WebSphere MQ | MQOutput | XML_FLIGHTQUERY_FAIL |
Transformation | Compute | BuildOutputMessage |
Transformation | Compute | ProcessTimeout |
Routing | 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 によって制御メッセージが書き込まれたキューです。) |
入力メッセージ構文解析 | メッセージ・ドメイン | XMLNSC : XML メッセージの場合 (ネームスペースが有効、妥当性検査、メモリー使用量が少ない) (この値は、汎用 XML パーサーを使用するようにブローカーに指示します。) |
|
AggregateReplies | 基本 | 集約名 | FLIGHTDETAILSAGG (この名前は、FlightQuery_Out メッセージ・フローの Request Details ノードの「集合名」プロパティーと一致していなければなりません。) |
基本 | 不明なメッセージ・タイムアウト | 60 (この値は応答として識別できないメッセージが、Unknown ターミナルに伝搬されるまでに保持される時間の長さです。) |
|
Buildoutputmessage | 基本 | ESQL モジュール | BuildOutputMessage (この値は、処理中にこのノードによって使用される ESQL モジュールの名前です。この名前は、ESQL ファイル中の CREATE COMPUTE MODULE ステートメント中の名前と一致していなければなりません。) |
XML_FLIGHTQUERY_OUT | 基本 | キュー名 (キューはブローカーと同じキュー・マネージャーで定義されるので、キュー・マネージャーの名前を指定する必要はありません。) |
XML_FLIGHTQUERY_OUT (この値は、メッセージ・フローがメッセージを書き込むローカル・キューです。) |
Processtimeout | 基本 | 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 - BuildOutputMessage/ProcessTimeout -- ********************************************************************************* 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.Version = MQMD_CURRENT_VERSION; DECLARE inflight REFERENCE TO InputRoot.ComIbmAggregateReplyBody.FlightDetails.XMLNSC.Flight; DECLARE inpass REFERENCE TO InputRoot.ComIbmAggregateReplyBody.PassengerDetails.XMLNSC.ListOfPassengers; CREATE FIELD OutputRoot.XMLNSC.FlightDetailsInfoResponse; DECLARE outresp REFERENCE TO OutputRoot.XMLNSC.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.(XMLNSC.Attribute)number VALUE = inflight.FLIGHTNO; SET outresp.Flight.(XMLNSC.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.Version = MQMD_CURRENT_VERSION; CREATE FIELD OutputRoot.XMLNSC.ComIbmAggregateReplyBody; DECLARE timedout REFERENCE TO OutputRoot.XMLNSC.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.XMLNSC; END IF; RETURN TRUE; END; END MODULE;