使用简单的邮购处理系统重新审视角色、角色链接和参与方





4.00/5 (2投票s)
使用角色和参与方解决一个简单的邮购公司案例
引言
我注意到开发人员由于缺乏对其的理解而没有使用 BizTalk 角色链接。 本文试图缓解使用 BizTalk 角色链接 的担忧。 角色链接不是 BAS,不需要使用 BAS。
案例研究:邮购公司
场景
邮购公司将几个包裹发送到不同的目的地。 邮购公司为此目的使用了几个 承运商
。 例如 FEDEX、UPS 和 USPS。 每个承运商都覆盖某些目的地 邮政编码
,这取决于机场的邻近程度或特殊的递送流程。 承运商
的目的地邮政编码覆盖范围在不同的季节(春季/夏季/秋季/冬季)不断变化。

条件
各种承运商覆盖的 邮政编码
会因各种情况而不断变化。
待解决的问题!
- 设计一个系统,可以轻松更改分配给
承运商
的邮政编码,而无需存储特定的承运商
信息。 - 可以轻松添加新的
承运商
。 - 向现有的
承运商
添加新的递送邮政编码。
什么是角色?
BizTalk 术语中的 角色
包括一个端口类型,所有消息都通过该端口类型从业务流程中发出。 使用一个角色,可以将多个参与方附加到该角色。 在本案例中,我们有一个 承运商
角色和几个附加到它的 参与方
(FEDEX、UPS 和 USPS)。

什么是角色链接?
角色链接
可用于将业务流程从实际的执行/递送系统中抽象出来。 例如,在邮购系统中,目标是通过雇用中介(承运商)将包裹发送给客户。 每个承运商都需要以某种格式发送数据。

什么是参与方?
参与方
是 BizTalk 边界之外的 实体
或 企业
,数据将传输到该实体或企业。 必须 登记
一个 角色链接
与一个参与方才能使其工作。

将参与方绑定到角色
当多个 参与方
绑定到一个 角色
时,就像我们的情况一样,将在每个参与方中比较 邮政编码
字段,并将消息传输到与之匹配的参与方。

理解 ShipOrders 业务流程
ShipOrders
业务流程使用一个 角色链接
(ZipCodeShipper
) 和一个 角色
(承运商
) 将包裹 邮政编码
信息发送到附加到其角色的各个 参与方
。

ZipCodeShipper(Microsoft.XLANGs.BaseTypes.DestinationParty) =
new Microsoft.XLANGs.BaseTypes.Party(MailOrderMsg.Body.ShippingZipCode, "ZipCode");
参与方需要两个参数,第一个是 名称
,另一个是 限定符
。 注意如何设置目的地参与方,通过提供 邮政编码
值和 限定符
"ZipCode
"。
输入 XML
请注意,ShippingZipCode
是已提升的字段。

开发说明
错误: MailOrderProcessing
:尝试将消息 'MailOrderMsg
' 发送到 (94553, ZipCode) 时,未找到目的地参与方。
解决方法: 当承运商角色在其递送列表中没有此 邮政编码
时,可能会发生这种情况。 必须添加其中一个登记的参与方,这可以解决问题。
可下载代码
BizTalk 参与方配置留给开发人员作为练习。