扩展受管文件传输样本之前,必须完成下列其中一个任务:
导入或构建样本后,可以扩展该样本:
如果在运行样本时发生问题,请参阅 IBM Integration Bus 文档中的为 WebSphere MQ File Transfer Edition 节点准备环境或解决运行样本时的问题。
此样本处理一家分店。要扩展此样本,以在 FTEInputBranch2HQMFlow 消息流上处理多家分店,请更改 FTEInput 节点过滤器。过滤允许 FTEInput 节点选择要选取并处理的消息。例如:
要根据目录位置进行过滤,请将“目录过滤器”字段设置为指向作为分店代理程序传输消息目标的目录。
您还必须为每个其他分店模拟一个代理程序。在样本场景中,.mbtest 客户机用于模拟从分店发送库存补货请求消息。要指示发出消息的分店,将使用分店号来填充应用程序源数据头字段。然后,该头将用于通过在本地环境中设置通配符匹配来设置文件名。
要启用该样本在 FTEOutputHQ2BranchMFlow 消息流上与多家分店配合使用,请更改以下 FTEOutput 节点属性:
在本地环境中,将“目标目录”和/或“代理程序名称”设置为将消息传递到正确的分店,请参阅 FTE 元数据。
此样本现在可以使用本地代理程序和远程代理程序来处理来自多家分店的文件。
如果样本零售场景已扩展为与多家分店配合使用,那么通常将把流实例设置为与其他实例配合使用,以优化吞吐量。
有了其他实例,库存应用程序将接收和处理来自不同分店的消息,并打乱接收到的数据的顺序。使用 FTEOutput 节点的消息流可能在任意给定时间打开并处理多家分店的文件,同时开始构建文件。
有了多流处理,就无法保证库存应用程序的数据输出的顺序是接收到时的顺序。必须在最后收到特定分店的 End of Data 记录,这样该文件将只在完成后关闭。产品数据的顺序是 XML 格式的,且可使用任何顺序编写。
下图显示了两种解决此问题的方法。在顶部的流中,Resequence 节点放在 FTEOutput 节点之前。Resequence 节点根据插入每条记录的序号,控制分店入局消息通过该节点进行传播的顺序。要保持分店产品数据的完整性,将插入消息组标签(例如,分店名),以确保 Resequence 节点只收集其目标分店的产品。但是,Resequence 节点要求属于同一分店(序列组)的消息仅由单个线程进行处理。此场景不同于多实例操作的原始要求。将实现正确的序列,代价是无法进行多实例流操作。
如果按照底部的流所示对消息进行重新设计,将解决此冲突。此处的 Resequence 节点放在 FTEOutput 节点之后。

该流现在可以在多线程方式下运行,以产品数据达到输入终端的顺序编写产品数据。来自 FTEOutput 节点的输出由 Resequence 节点捕获,Resequence 节点在传播记录之前,始终等待接收最后一条记录。End of Data 记录将直接发送到 Resequence 节点,仅当该节点收到分店的全套记录后,才会传播记录。Filter 节点将废弃数据记录,并只将 End of Data 记录发送到 FTEOutput 节点。FTEOutput 节点现在可以关闭文件并调用代理程序来传输该文件。
此设计使 FTEOutput 节点能够在使用其他实例的流中运行,并保持以特定文件为目标的数据的完整性。
基本样本使用临时 Integration 节点 FTE 代理程序。有关如何将 WMQFTE 远程代理程序与
Integration 节点代理程序配合使用以及如何使用 IBM Integration Explorer Tooling 来创建传输并检查传输进度的详细信息,请参阅
欢迎使用 WebSphere MQ File Transfer Edition。

此样本包括 Branch2HQDriver ESQL 代码中已注释的代码段和描述。例如:
-- When you use the FTEInput node, it stores information that you can access in the LocalEnvironment.FTE and -- LocalEnvironment.FTE.Transfer message trees. The LocalEnvironment.FTE message tree stores information relating -- to the current record and is populated by the integration node. The LocalEnvironment.FTE.Transfer message tree contains -- information received from WebSphere® MQ File Transfer Edition regarding the file --LocalEnvironment.FTE.TimeStamp (CHARACTER) --LocalEnvironment.FTE.Offset (INTEGER) --LocalEnvironment.FTE.Record (INTEGER) --LocalEnvironment.FTE.Delimiter (CHARACTER) --LocalEnvironment.FTE.Transfer.Directory (CHARACTER)
有关 FTE 元数据的信息,请参阅 IBM Integration Bus 文档中的使用 WebSphere MQ File Transfer Edition 进行受管文件传输。
此基本样本演示了请求/应答模型。此样本使用来自 XML 消息和 MQMD 的分店号来确保请求/应答的相关性。此部分着重阐述了使用传输标识和作业名以实现请求/应答的相关性。
FTE 代理程序传输消息时,代理程序将使用有关该传输的信息来填充本地环境。可以覆盖此信息(请参阅 FTE 元数据),也可以直接使用此消息用于关联消息并确保所有消息均发送回正确的 FTE 代理程序。您可以在 IBM Integration Explorer Tooling 视图中的传输属性中看到此信息,例如:
# STARTING
<?xml version="1.0" encoding="UTF-8"?>
<transaction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ID="414d51204d4237514d47522020202020bb73ea4b20046302"
agentRole="sourceAgent" version="3.00" xsi:noNamespaceSchemaLocation="TransferLog.xsd">
<action time="2010-05-12T11:34:12.421Z">started</action>
<sourceAgent QMgr="IB9QMGR" agent="IB9NODE.FTEBRANCH123">
<systemInfo architecture="x86" name="Windows XP" version="5.1 build 2600 Service Pack 3"/>
</sourceAgent>
<destinationAgent QMgr="IB9QMGR" agent="IB9NODE.FTEHQ"/>
<originator>
<hostName>IBM-27BDFF76CFB</hostName>
<userID>SYSTEM</userID>
<mqmdUserID>SYSTEM</mqmdUserID>
</originator>
<transferSet bytesSent="0" startTime="2010-05-12T11:34:12.421Z" total="1">
<metaDataSet>
<metaData key="com.ibm.wmqfte.TransferId">414d51204d4237514d47522020202020bb73ea4b20046302</metaData>
<metaData key="com.ibm.wmqfte.MqmdUser">SYSTEM</metaData>
<metaData key="com.ibm.wmqfte.DestinationAgent">IB9NODE.FTEHQ</metaData>
<metaData key="com.ibm.wmqfte.OriginatingHost">IBM-27BDFF76CFB</metaData>
<metaData key="com.ibm.wmqfte.OriginatingUser">SYSTEM</metaData>
<metaData key="com.ibm.wmqfte.JobName">Branch123</metaData>
<metaData key="com.ibm.wmqfte.SourceAgent">IB9NODE.FTEBRANCH123</metaData>
</metaDataSet>
</transferSet>
<job>
<name>Branch123</name>
</job>
</transaction>