构建受管文件传输样本

如果在运行样本时发生问题,请参阅 IBM Integration Bus 文档中的为 WebSphere MQ File Transfer Edition 节点准备环境解决运行样本时的问题

创建 branch2HQDriver 消息流

使用以下指示信息来创建分店日结销售应用程序消息流。

  1. 创建名为 FTENodesSampleFlowProjecte 的新 Integration 项目。有关更多信息,请参阅 IBM Integration Bus 文档中的创建 Integration 项目
    1. 右键单击该 Integration 项目,然后单击“新建 > 消息流”。
    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. 将“计算方式”设置为“本地环境和消息”。
    4. 双击“Prepare for FTEAgent”节点。
    5. 在 BEGIN 部分中添加以下 ESQL 语句:
      -- 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. 将“代理程序”设置为使用以下格式的相应代理程序名称:IB9NODE.FTEHQ
    4. 如果您使用的是缺省配置,请将“队列管理器”设置为 IB9QMGR
    5. 将“输入目录”设置为 /ToHQ
    6. 将“文件名”设置为 StockReplenishmentRequest_*.xml
    7. 单击“记录和元素”,将“记录定义”设置为“记录是整个文件”。

创建 FTEInputBranch2HQMFlow 消息流

使用以下指示信息来创建“HQ 接收库存补货详细信息”消息流。

  1. 使用先前创建的 Integration 项目,按照以下指示信息完成操作:
    1. 右键单击该 Integration 项目,然后单击“新建 > 消息流”。
    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) End of Data 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. 将“计算方式”设置为“本地环境和消息”。
    4. 双击“Preserve Branch Details”节点。
    5. 在 BEGIN 部分中添加以下 ESQL 语句:
      -- 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. 将“计算方式”设置为“本地环境和消息”。
    4. 双击“Mark End of Branch Data”节点。
    5. 在 BEGIN 部分中添加以下 ESQL 语句:
      -- 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. 将“序列组标识的路径”设置为 $LocalEnvironment/Wildcard/WildcardMatch
    4. 在“序列末尾定义”中,将“谓词”设置为 $InputRoot/XMLNSC/StockReplenishment/EndofData="true"
  8. 定制“Sent to HQ Replenishment App (MQ)”节点:
    1. 右键单击“Sent to HQ Replenishment App (MQ)”节点,然后单击“属性”。
    2. 如果您使用的是缺省配置,请单击“基本”,将“队列管理器名称”设置为 IB9QMGR
    3. 将“队列名”设置为 FTE_STOCK_PROCESS_HQ

创建 HQProcessingDriver 消息流

使用以下指示信息来创建“HQ 库存供应应用程序”消息流。

  1. 使用先前创建的 Integration 项目,按照以下指示信息完成操作:
    1. 右键单击该 Integration 项目,然后单击“新建 > 消息流”。
    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. 将“计算方式”设置为“本地环境和消息”。
    4. 双击“Demand Driven Replenishment”节点。
    5. 在 BEGIN 部分中添加以下 ESQL 语句:
      -- 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. 如果您使用的是缺省配置,请单击“基本”,将“队列管理器名称”设置为 IB9QMGR
    3. 将“队列名”设置为 FTE_STOCK_INVOICE_BRANCH

创建 FTEOutputHQ2BranchMFlow 消息流

使用以下指示信息来创建“分店接收来自 HQ 的补货 XML 文件”消息流。

  1. 使用先前创建的 Integration 项目,按照以下指示信息完成操作:
    1. 右键单击该 Integration 项目,然后单击“新建 > 消息流”。
    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. 将“计算方式”设置为“本地环境和消息”。
    4. 双击“Prepare for FTEAgent”节点。
    5. 在 BEGIN 部分中添加以下 ESQL 语句:
      -- 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. 将“代理程序”设置为使用以下格式的相应代理程序名称:IB9NODE.FTEBRANCH123
    4. 如果您使用的是缺省配置,请将“队列管理器”设置为 IB9QMGR
    5. 单击“基本”,将“输入目录”设置为 /ToBranch
    6. 将“文件名”设置为 StockReplenishmentInvoice_*.xml
    7. 单击“记录和元素”,将“记录定义”设置为“记录是未修改的数据”。

创建 Integration 节点属性

要运行样本,您必须创建以下本地队列:

创建以下代理归档 (BAR) 文件,并添加指定的消息流:

有关创建代理归档的更多信息,请参阅创建代理归档

创建以下执行组,并部署指定的 BAR 文件:

请参阅创建执行组部署代理归档文件

返回到样本主页