动态发送端口与异常处理的实现

BizTalkServer中,动态发送端口是一种强大的功能,它允许在运行时动态地指定消息的发送位置。这在处理文件传输时尤其有用,因为它可以根据文件的存在与否来决定文件的发送路径。本文将介绍如何创建动态发送端口以及如何处理在文件传输过程中可能出现的异常。

技术实现

为了实现这一解决方案,使用了以下架构、映射和管道:

  • 架构:EmpData.xsd
  • 映射:EmpTO Emp.btm
  • 接收管道1:Receive Pipeline1
  • 发送管道1:Send Pipeline1

在编排视图中创建一个接收端口和三个发送端口。

请参考以下步骤创建动态发送端口:

  1. 在编排视图中创建一个端口类型(例如:PortType_DyanamicSend)。
  2. 在编排视图中添加一个新的端口,并使用配置向导配置该端口。
  3. 从工具栏拖动一个表达式形状,并在表达式形状中编写以下代码:
C# { DynamicSend(Microsoft.XLANGs.BaseTypes.Address) = @" file://E:TempOUT" + strFilename; }

部署编排后,这将为创建动态端口。

(注意:请注意,可以从配置部分读取传输类型和位置。在这里,为了简单起见,在编排中硬编码了传输类型和位置。)

为了处理异常,为编排视图中创建的每个端口设置属性Delivery Notification = Transmitted。

需要构造的异常对象类型是Microsoft.XLANGs.BaseTypes.DeliveryFailureException。

现在部署包含架构、管道、编排的解决方案。

  1. 在BTS资源管理器中创建一个接收端口(例如:DynamicPortExp.Receive,带有一个接收位置DynamicPortExp.Receive.File,传输类型为File,文件放置位置为e:dataIn)。
  2. 在BTS资源管理器中创建两个发送端口(例如:DynamicportExp.Send.File,备份位置为e:databackup,和DynamicPortExp.Send.Error.file,错误位置为e:dataError,传输类型为File)。
  3. 在输入位置放置文件(例如:Emp1.txt),经过编排处理后,它将到达由动态发送端口指定的位置,例如E:TempOUT。
  4. 再次在输入位置放置相同的文件,因为文件已经存在于动态发送端口指定的位置,它将抛出一个Delivery failure异常。在编排的catch块中捕获这个异常。在事件查看器中记录此异常后,文件将被发送到备份位置。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485