自我关联的直接绑定端口是自引用的。 这意味着,自关联的直接绑定端口提供的信息,可以用于将消息发送回其所在的编排流程。 使用自关联直接绑定时,业务流程引擎会在特定于业务流程实例的消息上生成关联令牌。 这提供了在不使用关联集的情况下将消息返回到特定业务流程实例的功能。
例如,可以通过指定端口绑定的Direct,并在端口配置向导中选择自关联,在业务流程 A 中创建接收自关联直接绑定端口。 然后,在业务流程 B 中,将端口声明为与业务流程 A 中定义的相同端口类型的发送端口业务流程参数。为此,请执行以下作:
在“业务流程视图”窗口中,右键单击“ 业务流程参数”,然后单击“ 新建端口参数”。
在“属性”窗口中,对于 通信方向,选择“ 发送”,对于 “端口类型”,请选择业务流程 A 中定义的相同端口类型。
此声明在业务流程设计器中的端口图面上创建逻辑发送端口。 业务流程 A 使用 “启动业务流程 ”形状调用业务流程 B,并将新端口作为参数以及其他业务流程参数传递给业务流程 B。然后业务流程 B 执行其业务逻辑,并在传递给业务流程的新端口上发送消息。 消息将被发送到启动业务流程 B 的业务流程 A 实例的自关联直接绑定端口。
尽管前面的事件序列也可以使用 调用业务流程 形状来完成,但在使用 “开始业务流程 ”形状时,它才有意义。 这是因为使用调用编排形状时,端口是通过引用传递的。 端口的极性在两个业务流程中必须相同。 因此,从一个业务流程传入的端口的通信方向必须与调用业务流程中端口引用的方向相同。 但是,使用 “启动业务流程”组件时,将生成业务流程的异步实例化,并且它不能包含Out 或 Ref 参数。因此,自关联的直接绑定端口提供了一种方法,使业务流程能够回应实例化它的业务流程实例。
有关如何使用自关联直接绑定端口的示例,请参阅 SDK 示例“实现散播与收集模式”。https://go.microsoft.com/fwlink/?LinkId=73703