WorkflowInstance 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
WorkflowInstance 是一种基于实例的轻量运行时,用于执行工作流程序。 可以构造它来创建新工作流实例,或依据现有实例状态来创建它。 WorkflowInstance.WorkflowInstanceControl公开的 API 是最小运行时控件集,可依据这些控件来实现更高级别的操作。 此 API 集表示运行时的整个范围的功能。 WorkflowInstance 是一个抽象类,依赖于主机对其抽象方法的实现,以便提供同步、保留、跟踪和扩展等主机功能。
public ref class WorkflowInstance abstract
public abstract class WorkflowInstance
type WorkflowInstance = class
Public MustInherit Class WorkflowInstance
- 继承
-
WorkflowInstance
- 派生
注解
WorkflowInstance 是单线程的,并假定主机同步对它的所有访问。 如果尝试同时调用多个 API,将导致引发 InvalidOperationException。
WorkflowInstance 在内部有两种状态:“正在运行”和“已暂停”。 使运行时从已暂停状态转换为正在运行状态的唯一方法是调用 Run。 所有操作(除“暂停”外)都只能在运行时处于“已暂停”状态时执行。 在以下情况中,运行时会自然而然地变为“已暂停”状态:
运行时发生致命错误。 将通过 OnRequestAbort 向宿主发出信号(不会发出转换为“已暂停”的信号),然后通过 OnNotifyPaused 通知宿主。
工作流中的异常处于未捕获状态,并已将根转义。 将通过 OnNotifyUnhandledException 方法通知宿主。
计划程序已用完工作项,现在为 Idle。 将通过 OnNotifyPaused 方法通知宿主。 请注意,由于实例处于空闲状态或实例已完成,因此计划程序可能已用完工作项。 可以使用 State 属性的 Controller 值来区分这两种状态。
宿主可通过调用由 RequestPause 属性返回的 PauseWhenPersistable 实例的 WorkflowInstance.WorkflowInstanceControl 或 Controller 方法,请求从“正在运行”更改为“已暂停”。 不应将此请求视为具有特定的响应含义,即主机不应尝试将 OnNotify* 或 OnRequestAbort 与特定的暂停调用相关联。 为响应暂停请求,运行时可转换为“已暂停”,并在计划程序仍然具有挂起的工作项时调用 OnNotifyPaused。 可以使用 State 属性的 Controller 值来确定计划程序是没有其他工作还是被暂停请求所中断。
当RequestPause 处于“正在运行状态”时,只能调用 WorkflowInstance.WorkflowInstanceControl 属性返回的 Controller 实例的 WorkflowInstance 方法。 调用所有其他方法都会引发 InvalidOperationException。如果存在有关 WorkflowInstance 如何从一种状态转换为另一种状态的规则,则可按以下方式定义“正在运行”和“已暂停”的公共概念:
Running - 调用 与 Run 下一个 WorkflowInstance.OnNotify* 之间的状态。
已暂停 - 最后一个 WorkflowInstance.OnNotify* 与下一次调用 Run之间的状态。
构造函数
WorkflowInstance(Activity) |
使用指定的工作流定义初始化 WorkflowInstance 类的新实例。 |
WorkflowInstance(Activity, WorkflowIdentity) |
使用指定的工作流定义和定义标识来初始化 WorkflowInstance 类的新实例。 |
属性
Controller |
获取此 WorkflowInstance.WorkflowInstanceControl 的 WorkflowInstance 实例。 |
DefinitionIdentity |
获取或设置 WorkflowInstance 的定义标识。 |
HostEnvironment |
获取或设置工作流实例的自变量和变量的根环境。 |
Id |
获取工作流实例的唯一标识符。 |
IsReadOnly |
获取一个值,该值指示工作流实例是否已初始化。 |
SupportsInstanceKeys |
获取一个值,该值指示宿主是否支持 InstanceKeys 与运行时实例的关联。 |
SynchronizationContext |
获取或设置用于调度工作流实例的 SynchronizationContext。 |
WorkflowDefinition |
获取工作流实例的工作流定义。 |