Managed File Transfer サンプルの作成

サンプルの実行時に問題が生じた場合は、WebSphere Message Broker の資料の『WebSphere MQ File Transfer Edition ノードの環境の準備』または『サンプル実行時の問題の解決』を参照してください。

branch2HQDriver メッセージ・フローの作成

支店の 1 日の終わりの販売アプリケーション・メッセージ・フローを作成するには、以下の手順に従ってください。

  1. 新しいメッセージ・ブローカー・プロジェクト FTENodesSampleFlowProject を作成します。 詳しくは、WebSphere Message Broker 資料の メッセージ・ブローカー・プロジェクトの作成を参照してください。
    1. メッセージ・ブローカー・プロジェクトを右クリックし、「新規」>「メッセージ・フロー」をクリックします。
    2. 「メッセージ・フロー名」Branch2HQDriver.msgflow に設定し、「終了」をクリックします。
  2. メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
    ノード・タイプ ノード名
    MQInput Sales Data from Branch (MQ)
    Compute Prepare for FTEAgent
    FTEOutput File Transfer to HQ (FTE)
  3. 以下の表に示すようにノードを接続します。
    ノード名 ターミナル 接続先のノード
    Sales Data from Branch (MQ) Out Prepare for FTEAgent
    Prepare for FTEAgent Out File Transfer to HQ (FTE)(IN)
  4. "Sales Data from Branch (MQ)" ノードをカスタマイズします。
    1. "Sales Data from Branch (MQ)" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「キュー名」FTE_STOCK_REQ_BRANCH に設定します。
    3. 「入力メッセージ構文解析」をクリックし、「メッセージ・ドメイン」BLOB に設定します。
    4. 「拡張」をクリックし、「論理順序」プロパティーを選択します。
  5. "Prepare for FTEAgent" ノードをカスタマイズします。
    1. "Prepare for FTEAgent" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「ESQL モジュール」FTENodesSampleMFlow.Branch2HQDriver_PrepareforFTEAgent に設定します。
    3. 「計算モード」「LocalEnvironment とメッセージ」に設定します。
    4. "Prepare for FTEAgent" ノードをダブルクリックします。
    5. 以下の 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);
      
  6. "File Transfer to HQ (FTE)" ノードをカスタマイズします。
    1. "File Transfer to HQ (FTE)" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「ジョブ名」Branch123 などの任意の名前に設定します。
    3. 「エージェント」を該当するエージェント名に設定します (MB8BROKER.FTEHQ のような形式を使用してください)。
    4. デフォルト構成を使用している場合は、「キュー・マネージャー」MB8QMGR に設定します。
    5. 「入力ディレクトリー」/ToHQ に設定します。
    6. 「ファイル名」StockReplenishmentRequest_*.xml に設定します。
    7. 「レコードおよびエレメント」をクリックし、「レコードの定義」「レコードはファイル全体です」に設定します。

FTEInputBranch2HQMFlow メッセージ・フローの作成

以下の手順で、「HQ 受け取り在庫補充詳細」メッセージ・フローを作成します。

  1. 先ほど作成したメッセージ・ブローカー・プロジェクトを使用して、以下の手順を実行します。
    1. メッセージ・ブローカー・プロジェクトを右クリックし、「新規」>「メッセージ・フロー」をクリックします。
    2. 「メッセージ・フロー名」FTEInputBranch2HQMFlow.msgflow に設定し、「終了」をクリックします。
  2. メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
    ノード・タイプ ノード名
    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)
  3. 以下の表に示すようにノードを接続します。
    ノード名 ターミナル 接続先のノード
    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)
  4. "Receive File from Branch (FTE)" ノードをカスタマイズします。
    1. "Receive File from Branch (FTE)" ノードを右クリックして「プロパティー」をクリックします。
    2. 「基本」をクリックし、「ファイル名フィルター」StockReplenishmentRequest_*.xml に設定します。
    3. 「正常な処理に対する処置」「削除」に設定します。
    4. 「入力メッセージ構文解析」をクリックし、「メッセージ・ドメイン」XMLNSC に設定します。
    5. 「レコードおよびエレメント」をクリックし、「レコードの検出」「構文解析されたレコード・シーケンス」に設定します。
  5. "Preserve Branch Details" ノードをカスタマイズします。
    1. "Preserve Branch Details" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「ESQL モジュール」FTENodesSampleMFlow.FTEInputBranch2HQMFlow_PreserveBranchDetails に設定します。
    3. 「計算モード」「LocalEnvironment とメッセージ」に設定します。
    4. "Preserve Branch Details" ノードをダブルクリックします。
    5. 以下の 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;
  6. "Mark End of Branch Data" ノードをカスタマイズします。
    1. "Mark End of Branch Data" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「ESQL モジュール」FTENodesSampleMFlow.FTEInputBranch2HQMFlow_MarkEndofBranchData に設定します。
    3. 「計算モード」「LocalEnvironment とメッセージ」に設定します。
    4. "Mark End of Branch Data" ノードをダブルクリックします。
    5. 以下の 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';
  7. "Eliminate Duplication (Resequence)" ノードをカスタマイズします。
    1. "Eliminate Duplication (Resequence)" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「シーケンス番号へのパス」$LocalEnvironment/StockReplenishment/SequenceNumber に設定します。
    3. 「シーケンス・グループ ID へのパス」$LocalEnvironment/Wildcard/WildcardMatch に設定します。
    4. 「シーケンス定義の終了」で、「述部」$InputRoot/XMLNSC/StockReplenishment/EndofData="true" に設定します。
  8. "Sent to HQ Replenishment App (MQ)" ノードをカスタマイズします。
    1. "Sent to HQ Replenishment App (MQ)" ノードを右クリックし、「プロパティー」をクリックします。
    2. デフォルト構成を使用している場合は、「基本」をクリックし、「キュー・マネージャー名」MB8QMGR に設定します。
    3. 「キュー名」FTE_STOCK_PROCESS_HQ に設定します。

HQProcessingDriver メッセージ・フローの作成

以下の手順で、「HQ 在庫プロビジョニング・アプリケーション」メッセージ・フローを作成します。

  1. 先ほど作成したメッセージ・ブローカー・プロジェクトを使用して、以下の手順を実行します。
    1. メッセージ・ブローカー・プロジェクトを右クリックし、「新規」>「メッセージ・フロー」をクリックします。
    2. 「メッセージ・フロー名」HQProcessingDriver.msgflow に設定し、「終了」をクリックします。
  2. メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
    ノード・タイプ ノード名
    MQInput Receive Sales Data (MQ)
    Compute Demand Driven Replenishment
    MQOutput Send Stock Replenishment Invoice (MQ)
  3. 以下の表に示すようにノードを接続します。
    ノード名 ターミナル 接続先のノード
    Receive Sales Data (MQ) Out Demand Driven Replenishment
    Demand Driven Replenishment Out Send Stock Replenishment Invoice (MQ)
  4. "Receive Sales Data (MQ)" ノードをカスタマイズします。
    1. "Branch App Input" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「キュー名」FTE_STOCK_PROCESS_HQ に設定します。
    3. 「入力メッセージ構文解析」をクリックし、「メッセージ・ドメイン」XMLNSC に設定します。
    4. 「拡張」をクリックし、「論理順序」プロパティーを選択します。
  5. "Demand Driven Replenishment" ノードをカスタマイズします。
    1. "Demand Driven Replenishment" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「ESQL モジュール」FTENodesSampleMFlow.HQProcessingDriver_DemandDrivenReplenishment に設定します。
    3. 「計算モード」「LocalEnvironment とメッセージ」に設定します。
    4. "Demand Driven Replenishment" ノードをダブルクリックします。
    5. 以下の 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;
  6. "Send Stock Replenishment Invoice (MQ)" ノードをカスタマイズします。
    1. "Send Stock Replenishment Invoice (MQ)" ノードを右クリックし、「プロパティー」をクリックします。
    2. デフォルト構成を使用している場合は、「基本」をクリックし、「キュー・マネージャー名」MB8QMGR に設定します。
    3. 「キュー名」FTE_STOCK_INVOICE_BRANCH に設定します。

FTEOutputHQ2BranchMFlow メッセージ・フローの作成

以下の手順で、「HQ からの支店受け取り在庫補充 XML ファイル」メッセージ・フローを作成します。

  1. 先ほど作成したメッセージ・ブローカー・プロジェクトを使用して、以下の手順を実行します。
    1. メッセージ・ブローカー・プロジェクトを右クリックし、「新規」>「メッセージ・フロー」をクリックします。
    2. 「メッセージ・フロー名」FTEOutputHQ2BranchMFlow.msgflow に設定し、「終了」をクリックします。
  2. メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
    ノード・タイプ ノード名
    MQInput Receive Stock Replenishment Invoice (MQ)
    Compute Prepare for FTEAgent
    FTEOutput Transfer to Branch (FTE)
  3. 以下の表に示すようにノードを接続します。
    ノード名 ターミナル 接続先のノード
    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)
  4. "Receive Stock Replenishment Invoice (MQ)" ノードをカスタマイズします。
    1. "Receive Stock Replenishment Invoice (MQ)" ノードを右クリックして、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「キュー名」FTE_STOCK_INVOICE_BRANCH に設定します。
    3. 「入力メッセージ構文解析」をクリックし、「メッセージ・ドメイン」XMLNSC に設定します。
    4. 「拡張」をクリックし、「論理順序」プロパティーを選択します。
  5. "Prepare for FTEAgent" ノードをカスタマイズします。
    1. "Prepare for FTEAgent" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「ESQL モジュール」FTENodesSampleMFlow.FTEOutputHQ2BranchMFlow_PrepareforFTEAgent に設定します。
    3. 「計算モード」「LocalEnvironment とメッセージ」に設定します。
    4. "Prepare for FTEAgent" ノードをダブルクリックします。
    5. 以下の 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;
  6. "Transfer to Branch (FTE)" ノードをカスタマイズします。
    1. "Transfer to Branch (FTE)" ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」をクリックし、「ジョブ名」Invoice to FTEBRANCH123 などの任意の名前に設定します。
    3. 「エージェント」を該当するエージェント名に設定します (MB8BROKER.FTEBRANCH123 のような形式を使用してください)。
    4. デフォルト構成を使用している場合は、「キュー・マネージャー」MB8QMGR に設定します。
    5. 「基本」をクリックし、「入力ディレクトリー」/ToBranch に設定します。
    6. 「ファイル名」StockReplenishmentInvoice_*.xml に設定します。
    7. 「レコードおよびエレメント」をクリックし、「レコードの定義」「レコードは未変更のデータです」に設定します。

ブローカー・プロパティーの作成

このサンプルを実行するには、以下のローカル・キューを作成する必要があります。

以下のブローカー・アーカイブ (BAR) ファイルを作成し、指定されているメッセージ・フローを追加します。

ブローカー・アーカイブの作成について詳しくは、ブローカー・アーカイブの作成を参照してください。

以下の実行グループを作成し、指定されている BAR ファイルをデプロイします。

実行グループの作成およびブローカー・アーカイブ・ファイルのデプロイを参照してください。

サンプルのホームに戻る