在业务流程中使用角色链接

角色链接将业务流程与贸易合作伙伴之间的交互活动以抽象的形式表现出来。 借助角色链接,您就可以在不改变整体业务流程的前提下,依据贸易合作伙伴解析、消息内容或数据库查询结果,动态地选择要交互的贸易合作伙伴。

例如在企业对企业方案中,有多个买方,一个供应商,同时该供应商还有多个发货机构。 如果一个买方向供应商发送采购订单,供应商通过参与方解析,就可以知道该采购订单是哪个买方发送的,从而采用相应的折扣。 而且,供应商还可依据所订购的商品,在运行时确定由哪个发货机构负责送货。 尽管每个发货机构都可能有自己的传输协议,但供应商仍可在运行时使用同一业务流程来应对所有发货机构,并确定要联系哪个发货机构。 在以后的阶段,如果运输代理更新其传输协议(例如,从 FTP 到 HTTP),则供应商只需使用 BizTalk Explorer 或 BizTalk Server 管理控制台来更新与该特定发货代理关联的发送端口。 供应商不需要更改业务流程中的业务程序。

角色

业务流程中有两个角色:

  • 一个是“实现”角色,负责接收和处理消息。 该角色也称为提供者。

  • 一个是“使用”角色,负责发送消息。 该角色也称为使用者。

一个角色链接可包含一个使用者角色或一个提供者角色,也可各含一个。 使用者角色享受提供者角色提供的服务。 如果您所定义的角色链接具有一种或两种这样的角色,则将假定与您链接的合作伙伴充当了互补角色。

角色链接具有 SourceParty 属性、 DestinationParty 属性和发起角色。 发起角色是发生第一次通信的角色,因此它通过设置 DestinationParty 属性的值来启动角色链接。

如果发起角色是用于发送消息的使用者,则显式设置 DestinationParty 属性 (一次,并且仅在业务流程中) 一次。 为此,请在“表达式”形状中设置 DestinationParty 的值,如以下示例所示,其中 ConfirmOrder 是角色链接的名称,PartnerName 和 OrganizationName 是参与方的参数:

ConfirmOrder(Microsoft.XLANGs.BaseTypes.DestinationParty) = new Microsoft.XLANGs.BaseTypes.Party("PartnerName", "OrganizationName");  

如果发起角色是接收消息的提供程序,则接收方会自动初始化 DestinationParty 属性。 DestinationParty 设置为提供程序本身。 SourceParty 属性是只读的,通过受信任的管道组件提供,用于根据发送方的安全标识符 (SID) 或与参与方关联的证书解析参与方名称。 运行管道组件的主机必须标记为 “受信任的身份验证”。 可以使用以下示例代码在表达式形状中获取 SourceParty 的值:

PartyName = Buyer_Supplier(Microsoft.XLANGs.BaseTypes.SourceParty);

角色链接是由一个或两个角色组成的角色链接类型的实例。 使用角色链接类型时,请注意以下事项:

  • 对于任何给定的端口类型,只能在单个角色链接类型中对其引用一次。

  • 由于角色链接类型定义中包括端口类型,因此端口类型的作用域必须包含使用它的所有角色链接类型的作用域。

  • 使用业务活动服务 (BAS) 时,必须在同一 BizTalk 程序集中定义结构化的参数架构和与其相关联的角色链接类型。 由于与架构相关联的是角色链接类型,而不是组成该角色链接类型的各个角色,因此如果扮演不同角色的参与方共享包含该角色类型的程序集,则双方会看到相同的结构化参数架构。 如果双方使用相同的角色链接类型,但必须拥有不同的参数架构,则应创建不同的程序集。 各自程序集中的角色链接类型应完全相同。

本节内容

另请参阅

如何配置参与方解析管道组件
在业务流程中使用端口