Workflow Manager 1.0 Pub/Sub 活动

 

Workflow Manager 1.0 支持工作流订阅和接收有关新实例创建的消息以及与现有实例的相关性的消息。尽管实例的创建由工作流定义的 ActivationFilter 驱动,但是,想要在运行时动态订阅特定关联消息集的工作流实例可以通过使用 Subscribe 和 ReceiveNotification 活动来实现此目的。

System_CAPS_note注意

此模型不同于 WF4 模型,后者使用 Receive 的 CanCreateInstance 属性,因为激活信息是在工作流外部指定的(作为工作流的 WorkflowDefinition 的一部分)。

Pub/Sub 活动

可以使用四个核心活动来接收通知消息:

  • BuildMatchAllFilter – 此活动可定义用于将传入消息(在范围的通知终结点上)与工作流实例进行匹配的筛选器。此筛选器针对指定给所提供值的每个属性执行完全匹配。注意:定义的类型与匹配语义相关,也就是说,在发布的消息中,int 值 1 与字符串“1”不匹配。

  • ReceiveNotification – 此活动用于阻止工作流执行,直到收到了匹配的通知消息为止。该活动还会公开消息属性和内容,以便能够将它们绑定到工作流变量。可以将筛选器显式提供给活动,也可以从前一个 Subscribe 活动使用 SubscriptionHandle。如果使用前一种模式(将筛选器提供给活动),则在收到消息并将它传递到工作流后,会执行隐式取消订阅。

  • Subscribe – 此活动可用于根据输入筛选器显式创建订阅规则。订阅将存储在 SubscriptionHandle 变量中,该变量可用于后续的 ReceiveNotification 活动和/或 Unsubscribe 活动。

  • Unsubscribe – 此活动可用于根据输入 SubscriptionHandle 显式取消订阅。注意:如果某个 SubscriptionHandle 变量超出范围,它会隐式调用 unsubscribe 以确保句柄不会泄漏,因此 Unsubscribe 活动并不是始终必需的。

将使用 Notifications 终结点或 .NET Client API (WorkflowInstanceManager) 将消息发布到范围,以发布通知消息。一条通知消息包括两个部分:

  • 属性 – 可用于筛选目的的键值对简单列表,也可以使用 ReceiveNotification 的 Properties 属性在工作流中对它进行访问。

  • 内容 - 消息的内容。可以提供 Dictionary<string, object>,以便映射到 ReceiveNotification 的 Content 属性 (ReceiveParametersContent);也可以传递特定的对象,以便映射到作为 ReceiveMessageContent 负载的工作流。

有关Workflow Manager 1.0中的消息传递的详细信息,请参阅入站消息