工作流控制终结点

工作流控制端点允许开发人员调用控制操作,以远程控制使用WorkflowServiceHost托管的工作流实例。 此功能可用于以编程方式执行控制作,例如暂停、恢复和终止。

警告

如果在事务中使用工作流控制终结点,而所控制的工作流包含活动 Persist,则工作流实例将会阻塞,直到事务超时。

工作流实例管理

.NET Framework 4.6.1 定义名为 IWorkflowInstanceManagement 的新协定。 此协定定义一系列控制作,可让你远程控制托管的 WorkflowServiceHost工作流实例。 WorkflowControlEndpoint 是一个标准终结点,它提供了对 IWorkflowInstanceManagement 协定的实现。 WorkflowControlClient 是一种类,用于将控制操作发送到 WorkflowControlEndpoint

工作流实例可以处于以下状态之一:

活跃
工作流实例到达已完成状态之前的状态,当工作流实例未处于挂起状态时。 处于此状态时,工作流实例运行并处理应用程序消息。

已暂停
处于此状态时,即使有未开始运行或部分运行的活动,工作流实例也不会运行。

完成
工作流实例的最终状态。 到达完成状态后,工作流实例无法运行。

IWorkflowInstanceManagement

IWorkflowInstanceManagement 接口定义一组具有同步和异步版本的控制作。 事务处理版本要求使用识别事务处理的绑定。 下表列出了支持的控制操作。

控制操作 DESCRIPTION
中止 强制停止工作流实例的执行。
取消 将工作流实例从活动状态或挂起状态转换为已完成状态。
跑步 为工作流实例提供执行机会。
暂停 将工作流实例从活动状态转换为挂起状态。
终止 将工作流实例从活动状态或挂起状态转换为已完成状态。
取消挂起 将工作流实例从挂起状态转换为活动状态。
TransactedCancel 在一个事务中执行“取消”操作(该事务可以从客户端流入或在本地创建)。 如果系统维护工作流实例的持久状态,则必须在执行此作期间保留工作流实例。
TransactedRun 在某个事务(从客户端流入或在本地创建)下执行运行操作。 如果系统维护工作流实例的持久状态,则必须在执行此作期间保留工作流实例。
TransactedSuspend 在某个事务中执行挂起操作(该事务可以是从客户端流入的,也可以是在本地创建的)。 如果系统维护工作流实例的持久状态,则必须在执行此作期间保留工作流实例。
TransactedTerminate 在某个事务(从客户端流入或在本地创建)下执行终止操作。 如果系统维护工作流实例的持久状态,则必须在执行此作期间保留工作流实例。
TransactedUnsuspend 在某个事务(从客户端流入或在本地创建)下执行取消挂起操作。 如果系统维护工作流实例的持久状态,则必须在执行此作期间保留工作流实例。

IWorkflowInstanceManagement 协定不提供创建新工作流实例的方法,而只是为了管理现有的工作流实例。 有关远程创建新工作流实例的详细信息,请参阅 工作流服务主机扩展性

工作流程控制端点

WorkflowControlEndpoint是具有固定协定的标准终结点。 IWorkflowInstanceManagement 添加到 WorkflowServiceHost 实例后,此终结点可用于向宿主实例托管的任何工作流实例发送命令操作。 有关标准终结点的详细信息,请参阅 标准终结点

工作流程控制客户端

WorkflowControlClient是一个类,可用于将控制消息发送到WorkflowControlEndpoint上的WorkflowServiceHost。 它对于 IWorkflowInstanceManagement 协定支持的每个操作包含一个方法,但事务处理的操作除外。 WorkflowControlClient 使用环境事务来确定是否应使用事务处理的操作。