Managed File Transfer サンプルの作成
サンプルの実行時に問題が生じた場合は、WebSphere Message Broker の資料の『WebSphere MQ File Transfer Edition ノードの環境の準備』または『サンプル実行時の問題の解決』を参照してください。
branch2HQDriver メッセージ・フローの作成
支店の 1 日の終わりの販売アプリケーション・メッセージ・フローを作成するには、以下の手順に従ってください。
- 新しいメッセージ・ブローカー・プロジェクト FTENodesSampleFlowProject を作成します。
詳しくは、WebSphere Message Broker 資料の メッセージ・ブローカー・プロジェクトの作成を参照してください。
- メッセージ・ブローカー・プロジェクトを右クリックし、「新規」>「メッセージ・フロー」をクリックします。
- 「メッセージ・フロー名」を Branch2HQDriver.msgflow
に設定し、「終了」をクリックします。
- メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
ノード・タイプ |
ノード名 |
MQInput |
Sales Data from Branch (MQ) |
Compute |
Prepare for FTEAgent |
FTEOutput |
File Transfer to HQ (FTE) |
- 以下の表に示すようにノードを接続します。
ノード名 |
ターミナル |
接続先のノード |
Sales Data from Branch (MQ) |
Out |
Prepare for FTEAgent |
Prepare for FTEAgent |
Out |
File Transfer to HQ (FTE)(IN) |
- "Sales Data from Branch (MQ)" ノードをカスタマイズします。
- "Sales Data from Branch (MQ)" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「キュー名」を FTE_STOCK_REQ_BRANCH に設定します。
- 「入力メッセージ構文解析」をクリックし、「メッセージ・ドメイン」を BLOB に設定します。
- 「拡張」をクリックし、「論理順序」プロパティーを選択します。
- "Prepare for FTEAgent" ノードをカスタマイズします。
- "Prepare for FTEAgent" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「ESQL モジュール」を FTENodesSampleMFlow.Branch2HQDriver_PrepareforFTEAgent に設定します。
- 「計算モード」を「LocalEnvironment とメッセージ」に設定します。
- "Prepare for FTEAgent" ノードをダブルクリックします。
- 以下の ESQL ステートメントを BEGIN セクションに追加します。
-- CALL CopyMessageHeaders();
CALL CopyEntireMessage();
-- The BranchName(Code) to create the output file is taken from the MQMD Header
SET OutputLocalEnvironment.Wildcard.WildcardMatch = TRIM(InputRoot.MQMD.ApplOriginData);
- "File Transfer to HQ (FTE)" ノードをカスタマイズします。
- "File Transfer to HQ (FTE)" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「ジョブ名」を Branch123 などの任意の名前に設定します。
- 「エージェント」を該当するエージェント名に設定します (MB8BROKER.FTEHQ のような形式を使用してください)。
- デフォルト構成を使用している場合は、「キュー・マネージャー」を MB8QMGR に設定します。
- 「入力ディレクトリー」を /ToHQ に設定します。
- 「ファイル名」を StockReplenishmentRequest_*.xml に設定します。
- 「レコードおよびエレメント」をクリックし、「レコードの定義」を「レコードはファイル全体です」に設定します。
FTEInputBranch2HQMFlow メッセージ・フローの作成
以下の手順で、「HQ 受け取り在庫補充詳細」メッセージ・フローを作成します。
- 先ほど作成したメッセージ・ブローカー・プロジェクトを使用して、以下の手順を実行します。
- メッセージ・ブローカー・プロジェクトを右クリックし、「新規」>「メッセージ・フロー」をクリックします。
- 「メッセージ・フロー名」を FTEInputBranch2HQMFlow.msgflow
に設定し、「終了」をクリックします。
- メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
ノード・タイプ |
ノード名 |
FTEInput |
Receive File from Branch (FTE) |
Compute |
Preserve Branch Details |
Compute |
Mark End of Branch Data |
Resequence |
Eliminate Duplication (Resequence) |
MQOutput |
Sent to HQ Replenishment App (MQ) |
- 以下の表に示すようにノードを接続します。
ノード名 |
ターミナル |
接続先のノード |
Receive File from Branch (FTE) |
Out |
Preserve Branch Details |
Preserve Branch Details |
Out |
Eliminate Duplication (Resequence) |
Receive File from Branch (FTE) |
データ終了 |
Mark End of Branch Data |
Mark End of Branch Data |
Out |
Eliminate Duplication (Resequence) |
Eliminate Duplication (Resequence) |
Out |
Sent to HQ Replenishment App (MQ) |
- "Receive File from Branch (FTE)" ノードをカスタマイズします。
- "Receive File from Branch (FTE)" ノードを右クリックして「プロパティー」をクリックします。
- 「基本」をクリックし、「ファイル名フィルター」を StockReplenishmentRequest_*.xml に設定します。
- 「正常な処理に対する処置」を「削除」に設定します。
- 「入力メッセージ構文解析」をクリックし、「メッセージ・ドメイン」を XMLNSC に設定します。
- 「レコードおよびエレメント」をクリックし、「レコードの検出」を「構文解析されたレコード・シーケンス」に設定します。
- "Preserve Branch Details" ノードをカスタマイズします。
- "Preserve Branch Details" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「ESQL モジュール」を FTENodesSampleMFlow.FTEInputBranch2HQMFlow_PreserveBranchDetails に設定します。
- 「計算モード」を「LocalEnvironment とメッセージ」に設定します。
- "Preserve Branch Details" ノードをダブルクリックします。
- 以下の ESQL ステートメントを BEGIN セクションに追加します。
-- CALL CopyMessageHeaders();
CALL CopyEntireMessage();
SET OutputRoot.XMLNSC.StockReplenishment.SequenceNumber = InputLocalEnvironment.FTE.Record;
-- Used by the resequence node to reject duplicate records in a recovery situation
SET OutputLocalEnvironment.Wildcard.WildcardMatch = InputRoot.XMLNSC.StockReplenishment.BranchNumber;
SET OutputLocalEnvironment.StockReplenishment.SequenceNumber = InputLocalEnvironment.FTE.Record;
- "Mark End of Branch Data" ノードをカスタマイズします。
- "Mark End of Branch Data" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「ESQL モジュール」を FTENodesSampleMFlow.FTEInputBranch2HQMFlow_MarkEndofBranchData に設定します。
- 「計算モード」を「LocalEnvironment とメッセージ」に設定します。
- "Mark End of Branch Data" ノードをダブルクリックします。
- 以下の ESQL ステートメントを BEGIN セクションに追加します。
-- CALL CopyMessageHeaders();
CALL CopyEntireMessage();
-- Take the Branch number from the File Name "StockReplenishmentRequest_*.xml"
SET OutputRoot.XMLNSC.StockReplenishment.BranchNumber = SUBSTRING( InputLocalEnvironment.FTE.Name FROM 27 FOR 3 );
SET OutputRoot.XMLNSC.StockReplenishment.SequenceNumber = InputLocalEnvironment.FTE.Record + 1;
SET OutputRoot.XMLNSC.StockReplenishment.EndofData = 'true';
-- For the Resequence Node
SET OutputLocalEnvironment.Wildcard.WildcardMatch = OutputRoot.XMLNSC.StockReplenishment.BranchNumber;
SET OutputLocalEnvironment.StockReplenishment.SequenceNumber = InputLocalEnvironment.FTE.Record + 1;
SET OutputLocalEnvironment.StockReplenishment.EndofData = 'true';
- "Eliminate Duplication (Resequence)" ノードをカスタマイズします。
- "Eliminate Duplication (Resequence)" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「シーケンス番号へのパス」を $LocalEnvironment/StockReplenishment/SequenceNumber に設定します。
- 「シーケンス・グループ ID へのパス」を
$LocalEnvironment/Wildcard/WildcardMatch に設定します。
- 「シーケンス定義の終了」で、「述部」を $InputRoot/XMLNSC/StockReplenishment/EndofData="true" に設定します。
- "Sent to HQ Replenishment App (MQ)" ノードをカスタマイズします。
- "Sent to HQ Replenishment App (MQ)" ノードを右クリックし、「プロパティー」をクリックします。
- デフォルト構成を使用している場合は、「基本」をクリックし、「キュー・マネージャー名」を MB8QMGR に設定します。
- 「キュー名」を FTE_STOCK_PROCESS_HQ に設定します。
HQProcessingDriver メッセージ・フローの作成
以下の手順で、「HQ 在庫プロビジョニング・アプリケーション」メッセージ・フローを作成します。
- 先ほど作成したメッセージ・ブローカー・プロジェクトを使用して、以下の手順を実行します。
- メッセージ・ブローカー・プロジェクトを右クリックし、「新規」>「メッセージ・フロー」をクリックします。
- 「メッセージ・フロー名」を HQProcessingDriver.msgflow
に設定し、「終了」をクリックします。
- メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
ノード・タイプ |
ノード名 |
MQInput |
Receive Sales Data (MQ) |
Compute |
Demand Driven Replenishment |
MQOutput |
Send Stock Replenishment Invoice (MQ) |
- 以下の表に示すようにノードを接続します。
ノード名 |
ターミナル |
接続先のノード |
Receive Sales Data (MQ) |
Out |
Demand Driven Replenishment |
Demand Driven Replenishment |
Out |
Send Stock Replenishment Invoice (MQ) |
- "Receive Sales Data (MQ)" ノードをカスタマイズします。
- "Branch App Input" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「キュー名」を
FTE_STOCK_PROCESS_HQ に設定します。
- 「入力メッセージ構文解析」をクリックし、「メッセージ・ドメイン」を XMLNSC に設定します。
- 「拡張」をクリックし、「論理順序」プロパティーを選択します。
- "Demand Driven Replenishment" ノードをカスタマイズします。
- "Demand Driven Replenishment" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「ESQL モジュール」を
FTENodesSampleMFlow.HQProcessingDriver_DemandDrivenReplenishment に設定します。
- 「計算モード」を「LocalEnvironment とメッセージ」に設定します。
- "Demand Driven Replenishment" ノードをダブルクリックします。
- 以下の ESQL ステートメントを BEGIN セクションに追加します。
-- CALL CopyMessageHeaders();
CALL CopyEntireMessage();
-- SET OutputLocalEnvironment.Wildcard.WildcardMatch = InputRoot.XMLNSC.StockReplenishment.BranchNumber;
-- Stock Replenishment changes is processed here
IF ( InputRoot.XMLNSC.StockReplenishment.LineItem.ItemID = 'AA0533' ) THEN
SET OutputRoot.XMLNSC.StockReplenishment.LineItem.ActualSalesUnitPrice = '1.50';
END IF;
IF ( InputRoot.XMLNSC.StockReplenishment.LineItem.ItemID = 'AA0534' ) THEN
SET OutputRoot.XMLNSC.StockReplenishment.LineItem.Quantity = '163';
SET OutputRoot.XMLNSC.StockReplenishment.LineItem.Promotion = '4 for 2.00';
END IF;
- "Send Stock Replenishment Invoice (MQ)" ノードをカスタマイズします。
- "Send Stock Replenishment Invoice (MQ)" ノードを右クリックし、「プロパティー」をクリックします。
- デフォルト構成を使用している場合は、「基本」をクリックし、「キュー・マネージャー名」を MB8QMGR に設定します。
- 「キュー名」を FTE_STOCK_INVOICE_BRANCH に設定します。
FTEOutputHQ2BranchMFlow メッセージ・フローの作成
以下の手順で、「HQ からの支店受け取り在庫補充 XML ファイル」メッセージ・フローを作成します。
- 先ほど作成したメッセージ・ブローカー・プロジェクトを使用して、以下の手順を実行します。
- メッセージ・ブローカー・プロジェクトを右クリックし、「新規」>「メッセージ・フロー」をクリックします。
- 「メッセージ・フロー名」を FTEOutputHQ2BranchMFlow.msgflow
に設定し、「終了」をクリックします。
- メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
ノード・タイプ |
ノード名 |
MQInput |
Receive Stock Replenishment Invoice (MQ) |
Compute |
Prepare for FTEAgent |
FTEOutput |
Transfer to Branch (FTE) |
- 以下の表に示すようにノードを接続します。
ノード名 |
ターミナル |
接続先のノード |
Receive Stock Replenishment Invoice (MQ) |
Out |
Prepare for FTEAgent |
Prepare for FTEAgent |
Out |
Transfer to Branch (FTE)(In) |
Prepare for FTEAgent |
Out1 |
Transfer to Branch (FTE)(Finish File) |
- "Receive Stock Replenishment Invoice (MQ)" ノードをカスタマイズします。
- "Receive Stock Replenishment Invoice (MQ)" ノードを右クリックして、「プロパティー」をクリックします。
- 「基本」をクリックし、「キュー名」を FTE_STOCK_INVOICE_BRANCH に設定します。
- 「入力メッセージ構文解析」をクリックし、「メッセージ・ドメイン」を XMLNSC に設定します。
- 「拡張」をクリックし、「論理順序」プロパティーを選択します。
- "Prepare for FTEAgent" ノードをカスタマイズします。
- "Prepare for FTEAgent" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「ESQL モジュール」を FTENodesSampleMFlow.FTEOutputHQ2BranchMFlow_PrepareforFTEAgent に設定します。
- 「計算モード」を「LocalEnvironment とメッセージ」に設定します。
- "Prepare for FTEAgent" ノードをダブルクリックします。
- 以下の ESQL ステートメントを BEGIN セクションに追加します。
-- CALL CopyMessageHeaders();
CALL CopyEntireMessage();
SET OutputLocalEnvironment.Wildcard.WildcardMatch = InputRoot.XMLNSC.StockReplenishment.BranchNumber;
IF ( InputRoot.XMLNSC.StockReplenishment.EndofData = 'true' ) THEN
PROPAGATE TO TERMINAL 'out1';
RETURN FALSE;
END IF;
RETURN TRUE;
- "Transfer to Branch (FTE)" ノードをカスタマイズします。
- "Transfer to Branch (FTE)" ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」をクリックし、「ジョブ名」を Invoice to FTEBRANCH123 などの任意の名前に設定します。
- 「エージェント」を該当するエージェント名に設定します (MB8BROKER.FTEBRANCH123 のような形式を使用してください)。
- デフォルト構成を使用している場合は、「キュー・マネージャー」を MB8QMGR に設定します。
- 「基本」をクリックし、「入力ディレクトリー」を
/ToBranch に設定します。
- 「ファイル名」を StockReplenishmentInvoice_*.xml に設定します。
- 「レコードおよびエレメント」をクリックし、「レコードの定義」を「レコードは未変更のデータです」に設定します。
ブローカー・プロパティーの作成
このサンプルを実行するには、以下のローカル・キューを作成する必要があります。
- FTE_STOCK_INVOICE_BRANCH
- FTE_STOCK_PROCESS_HQ
- FTE_STOCK_REQ_BRANCH
以下のブローカー・アーカイブ (BAR) ファイルを作成し、指定されているメッセージ・フローを追加します。
- BRANCH_DRIVER_ARCHIVE.bar
- HQ_ARCHIVE.bar
- FTEInputBranch2HQMFlow.msgflow
- FTEOutputHQ2BranchMFlow.msgflow
- HQProcessingDriver.msgflow
ブローカー・アーカイブの作成について詳しくは、ブローカー・アーカイブの作成を参照してください。
以下の実行グループを作成し、指定されている BAR ファイルをデプロイします。
- FTEBRANCH123
- BRANCH_DRIVER_ARCHIVE.bar
- FTEHQ
実行グループの作成およびブローカー・アーカイブ・ファイルのデプロイを参照してください。
サンプルのホームに戻る