65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (2投票s)

2011 年 12 月 6 日

CPOL

3分钟阅读

viewsIcon

27419

downloadIcon

325

使用角色和参与方解决一个简单的邮购公司案例

引言

我注意到开发人员由于缺乏对其的理解而没有使用 BizTalk 角色链接。 本文试图缓解使用 BizTalk 角色链接 的担忧。 角色链接不是 BAS,不需要使用 BAS。

案例研究:邮购公司

场景

邮购公司将几个包裹发送到不同的目的地。 邮购公司为此目的使用了几个 承运商。 例如 FEDEX、UPS 和 USPS。 每个承运商都覆盖某些目的地 邮政编码,这取决于机场的邻近程度或特殊的递送流程。 承运商 的目的地邮政编码覆盖范围在不同的季节(春季/夏季/秋季/冬季)不断变化。

MailOrderCompanyCase.PNG

条件

各种承运商覆盖的 邮政编码 会因各种情况而不断变化。

待解决的问题!

  1. 设计一个系统,可以轻松更改分配给 承运商 的邮政编码,而无需存储特定的 承运商 信息。
  2. 可以轻松添加新的 承运商
  3. 向现有的 承运商 添加新的递送邮政编码。

什么是角色?

BizTalk 术语中的 角色 包括一个端口类型,所有消息都通过该端口类型从业务流程中发出。 使用一个角色,可以将多个参与方附加到该角色。 在本案例中,我们有一个 承运商 角色和几个附加到它的 参与方(FEDEX、UPS 和 USPS)。

Role.PNG

什么是角色链接?

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

RoleLinks.PNG

什么是参与方?

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

PartiesAndBP.PNG

将参与方绑定到角色

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

BindPartyToRole.PNG

理解 ShipOrders 业务流程

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

RoleLinkOrchestration.PNG
ZipCodeShipper(Microsoft.XLANGs.BaseTypes.DestinationParty) = 
    new Microsoft.XLANGs.BaseTypes.Party(MailOrderMsg.Body.ShippingZipCode, "ZipCode");

参与方需要两个参数,第一个是 名称,另一个是 限定符。 注意如何设置目的地参与方,通过提供 邮政编码 值和 限定符 "ZipCode"。

输入 XML

请注意,ShippingZipCode 是已提升的字段。

InputFile.PNG

开发说明

错误: MailOrderProcessing:尝试将消息 'MailOrderMsg' 发送到 (94553, ZipCode) 时,未找到目的地参与方。

解决方法: 当承运商角色在其递送列表中没有此 邮政编码 时,可能会发生这种情况。 必须添加其中一个登记的参与方,这可以解决问题。

可下载代码

BizTalk 参与方配置留给开发人员作为练习。

参考文献

角色链接博客参考

© . All rights reserved.