如何使用合作伙伴业务流程直接绑定端口

合作伙伴业务流程直接绑定端口提供通过端口进行业务流程间通信的能力。 可以创建两种通信模式:前向合作伙伴业务流程直接绑定和反向合作伙伴业务流程直接绑定。 这两种模式都提供显式的业务流程间通信,这意味着在使用正向合作伙伴业务流程直接绑定时存在预期的接收方业务流程,并且在使用反向合作伙伴业务流程直接绑定时存在预期的发送方业务流程。

您还可以通过执行以下操作之一,设计隐式的合作伙伴业务流程直接绑定:

  • 使接收方成为 MessageBox 直接绑定端口,并且创建将从特定的发送业务流程接受消息的筛选器。

  • 使发送方成为 MessageBox 直接绑定端口,并且升级将与接收业务流程的订阅匹配的属性。

    若要配置合作伙伴业务流程直接绑定端口,请在端口配置向导中为端口绑定指定 Direct,然后选择“若要从其他业务流程接收消息,请在此处和这些业务流程中选择此端口”或“若要将消息发送到其他业务流程”,请在此处和这些业务流程中选择此端口,具体取决于是否在此端口上接收或发送消息。 然后从“ 合作伙伴业务流程上的端口 ”下拉列表中选择端口。 用于这两个端口的端口类型必须相同,这意味着消息类型也必须相同。 此外,为了能够直接绑定到合作伙伴业务流程端口,对于同一程序集中的业务流程,端口类型的 类型修饰符 必须是 “内部 ”或“ 公共 ”,以允许另一个程序集中的业务流程绑定到该程序集。 端口的极性必须相反。 例如,如果一方是发送端口,则另一方必须是接收端口。

    有关如何使用合作伙伴业务流程直接绑定端口的示例,请参阅 中的 https://go.microsoft.com/fwlink/?LinkId=73703SDK 示例“直接绑定到业务流程”。

转发合作伙伴业务流程直接绑定

这是用于合作伙伴业务流程直接绑定的典型通信模式。 通过此类型的正向合作伙伴业务流程直接绑定,您能够将多个发送方绑定到同一接收方。

若要配置正向合作伙伴业务流程直接绑定,请执行以下操作:

  1. 在业务流程 A 中,在业务流程工具箱中选择 “端口 ”形状。 这将启动端口配置向导。

  2. “端口属性” 页上的“ 名称” 字段中,键入 MyReceivePort。 单击“下一步”。

  3. “选择端口类型” 页上,选择“ 创建新的端口类型”。 在“ 端口类型名称” 字段中,键入 MyPartnerPortType。 单击“下一步”。

  4. “端口绑定 ”页上的“ 通信端口方向 ”下拉列表中,选择“ 我将始终在此端口上接收消息”。 在 “端口绑定 ”下拉列表中,选择“ 直接”。

  5. 选择“ 若要从其他业务流程接收消息,请在此处和这些业务流程中选择此端口”,然后在“ 合作伙伴业务流程上的端口 ”下拉列表中选择“ OrchestrationA.MyReceivePort”。 单击“下一步”。

  6. “完成端口向导” 页上,单击“ 完成”。

  7. 在业务流程 B 中,在业务流程工具箱中选择 “端口 ”形状。 这将启动端口配置向导。

  8. “端口属性” 页上的“ 名称” 字段中,键入 MySendPort。 单击“下一步”。

  9. 在“选择端口类型” 页上,选择“使用现有端口类型” 。 在 “可用端口类型”下,选择“ MyPartnerPortType”,然后单击“ 下一步”。

  10. 在“ 端口绑定 ”页上的“ 通信的端口方向 ”下拉列表中,选择“ 我将始终在此端口上发送消息”。 在 “端口绑定 ”下拉列表中,选择“ 直接”。

  11. 选择“ 若要将消息发送到其他业务流程,请在此处和这些业务流程中选择此端口”,然后在“ 合作伙伴业务流程上的端口 ”下拉列表中选择“ OrchestrationA.MyReceivePort”。 单击“下一步”。

  12. “完成端口向导” 页上,单击“ 完成”。

    注意

    存在从发送方业务流程到接收方业务流程的强绑定。 因此,如果您要修改接收方业务流程,或者要更改接收方业务流程的版本,必须更新发送方合作伙伴业务流程直接绑定端口的设计时配置。 但是,因为接收方业务流程并不显式了解发送方业务流程,所以,您可以在不影响接收方业务流程的情况下更新发送方业务流程。

    在前述配置中,业务流程 A 是接收方,业务流程 B 是发送方。 配置使业务流程 B 能够将消息发送到 OrchestrationA.MyReceivePort,并使业务流程 A 能够接收发送到 OrchestrationA.MyReceivePort 的任何消息。 此外,您可以通过采用与业务流程 B 相同的配置,添加业务流程 C 作为第二个发送方,添加业务流程 D 作为第三个发送方。

反向合作伙伴业务流程直接绑定

这不是用于合作伙伴业务流程直接绑定的典型通信模式。 在此模式中,绑定的方向与通信的方向相反。 通过此类型的反向合作伙伴业务流程绑定,您可以让单个发送方与多个接收方通信。

注意

如果您在将双向端口类型用于反向合作伙伴业务流程直接绑定,则必须对您的接收筛选器进行设置,以确保只有一个接收方将使用该消息。 这样做的原因在于,要求-响应端口要求单个响应。 如果多个接收方获得消息,则要求-响应端口将接受第一个响应,并且所有后续响应都将挂起且不可恢复。 在您尝试在此情况下发送消息时,消息引擎将引发异常,并且指出对于要求-响应端口存在多个接收方。

若要配置反向合作伙伴业务流程直接绑定,请执行以下操作:

  1. 在业务流程 A 中,在业务流程工具箱中选择 “端口 ”形状。 这将启动端口配置向导。

  2. “端口属性” 页上的“ 名称” 字段中,键入 MySendPort。 单击“下一步”。

  3. “选择端口类型” 页上,选择“ 创建新的端口类型”。 在“ 端口类型名称” 字段中,键入 MyPartnerPortType。 单击“下一步”。

  4. 在“ 端口绑定 ”页上的“ 通信的端口方向 ”下拉列表中,选择“ 我将始终在此端口上发送消息”。 在 “端口绑定 ”下拉列表中,选择“ 直接”。

  5. 选择“ 若要将消息发送到其他业务流程,请在此处和这些业务流程中选择此端口”,然后在“ 合作伙伴业务流程上的端口 ”下拉列表中选择“ OrchestrationA.MySendPort”。 单击“下一步”。

  6. “完成端口向导” 页上,单击“ 完成”。

  7. 在业务流程 B 中,在业务流程工具箱中选择 “端口 ”形状。 这将启动端口配置向导。

  8. “端口属性” 页上的“ 名称” 字段中,输入 MyReceivePort。 单击“下一步”。

  9. 在“选择端口类型” 页上,选择“使用现有端口类型” 。 在 “可用端口类型”下,选择“ MyPartnerPortType”,然后单击“ 下一步”。

  10. “端口绑定 ”页上的“ 通信端口方向 ”下拉列表中,选择“ 我将始终在此端口上接收消息”。 在 “端口绑定 ”下拉列表中,选择“ 直接”。

  11. 选择“ 若要从其他业务流程接收消息,请在此处和这些业务流程中选择此端口”,然后在“ 合作伙伴业务流程上的端口 ”下拉列表中选择“ OrchestrationA.MySendPort”。 单击“下一步”。

  12. “完成端口向导” 页上,单击“ 完成”。

    注意

    接收方业务流程将强行绑定到发送方业务流程。 因此,如果您要修改接收方业务流程或更新接收方业务流程的版本,则必须更新发送方的端口配置。 发送方业务流程并不显式了解接收方业务流程,因此,您可以在不影响发送方业务流程的情况下更新接收方业务流程。

    在前述配置中,业务流程 A 是发送方,业务流程 B 是接收方。 配置允许业务流程 A 通过 OrchestrationA.MySendPort 将消息发送到业务流程 B,并使业务流程 B 能够从 OrchestrationA.MySendPort 接收消息。 此外,您可以通过采用与业务流程 B 相同的配置,添加业务流程 C 作为第二个接收方,添加业务流程 D 作为第三个接收方。

另请参阅

如何使用 MessageBox 直接绑定端口如何使用 Self-Correlating 直接绑定端口