本主题适用于 Windows Workflow Foundation 4。
开发人员可以使用工作流管理终结点调用控制操作,从而远程控制使用 WorkflowServiceHost 承载的工作流实例。可以利用此功能以编程方式执行控制操作,如挂起、继续和终止。
工作流实例管理
.NET Framework 版本 4可定义名为 IWorkflowInstanceManagement 的新协定。此协定将定义一系列控制操作,通过这些控制操作可以远程控制由 WorkflowServiceHost 承载的工作流实例。WorkflowControlEndpoint 是一个标准终结点,它提供 IWorkflowInstanceManagement 协定的实现。WorkflowControlClient 是一个用于向 WorkflowControlEndpoint 发送控制操作的类。
工作流实例可以是以下状态之一:
- 活动
工作流达到完成状态之前并且不处于挂起状态时的状态。在这种状态下,工作流实例运行并处理应用程序消息。
- 挂起
处于此状态时,即使有尚未开始运行或已部分运行的活动,工作流实例仍不运行。
- 完成
工作流实例的最终状态。工作流实例达到完成状态后,就无法再运行。
IWorkflowInstanceManagement
IWorkflowInstanceManagement 接口将定义一组具有同步和异步版本的控制操作。事务处理版本要求使用识别事务处理的绑定。下表列出了支持的控制操作。
控制操作 | 说明 |
---|---|
中止 |
强制停止执行工作流实例。 |
取消 |
将工作流实例从活动或挂起状态转换为完成状态。 |
运行 |
向工作流实例提供执行的机会。 |
挂起 |
将工作流实例从活动状态转换为挂起状态。 |
终止 |
将工作流实例从活动或挂起状态转换为完成状态。 |
取消挂起 |
将工作流实例从挂起状态转换为活动状态。 |
TransactedCancel |
在某个事务(从客户端流入或在本地创建)下执行取消操作。如果系统维护了工作流实例的持久状态,则工作流实例必须在执行此操作期间存在。 |
TransactedRun |
在某个事务(从客户端流入或在本地创建)下执行运行操作。如果系统维护了工作流实例的持久状态,则工作流实例必须在执行此操作期间存在。 |
TransactedSuspend |
在某个事务(从客户端流入或在本地创建)下执行挂起操作。如果系统维护了工作流实例的持久状态,则工作流实例必须在执行此操作期间存在。 |
TransactedTerminate |
在某个事务(从客户端流入或在本地创建)下执行终止操作。如果系统维护了工作流实例的持久状态,则工作流实例必须在执行此操作期间存在。 |
TransactedUnsuspend |
在某个事务(从客户端流入或在本地创建)下执行取消挂起操作。如果系统维护了工作流实例的持久状态,则工作流实例必须在执行此操作期间存在。 |
IWorkflowInstanceManagement 协定无法用于创建新工作流实例,它只能管理现有工作流实例。有关远程创建新工作流实例的更多信息,请参见工作流服务主机可扩展性。
WorkflowControlEndpoint
WorkflowControlEndpoint 是具有固定协定 IWorkflowInstanceManagement 的标准终结点。将此终结点添加到 WorkflowServiceHost 实例后,随后可以使用此终结点将命令操作发送到由宿主实例承载的任何工作流实例。有关标准终结点的更多信息,请参见Standard Endpoints。
WorkflowControlClient
WorkflowControlClient 是一个类,可用于将控制消息发送到位于 WorkflowServiceHost 上的 WorkflowControlEndpoint。对于 IWorkflowInstanceManagement 协定支持的各个操作(事务处理操作除外),该类都包含一个方法。WorkflowControlClient 使用环境事务确定是否应使用事务处理操作。