工作流控制端点允许开发人员调用控制操作,以远程控制使用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 使用环境事务来确定是否应使用事务处理的操作。