WorkflowInstance 类

定义

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.WorkflowInstanceControlController 方法,请求从“正在运行”更改为“已暂停”。 不应将此请求视为具有特定的响应含义,即主机不应尝试将 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.WorkflowInstanceControlWorkflowInstance 实例。

DefinitionIdentity

获取或设置 WorkflowInstance 的定义标识。

HostEnvironment

获取或设置工作流实例的自变量和变量的根环境。

Id

获取工作流实例的唯一标识符。

IsReadOnly

获取一个值,该值指示工作流实例是否已初始化。

SupportsInstanceKeys

获取一个值,该值指示宿主是否支持 InstanceKeys 与运行时实例的关联。

SynchronizationContext

获取或设置用于调度工作流实例的 SynchronizationContext

WorkflowDefinition

获取工作流实例的工作流定义。

方法

BeginFlushTrackingRecords(TimeSpan, AsyncCallback, Object)

由工作流运行时调用,用于开始将挂起的跟踪记录以异步方式发送给跟踪参与者。

DisposeExtensions()

对实现 Dispose() 的所有扩展调用 IDisposable

EndFlushTrackingRecords(IAsyncResult)

由工作流运行时调用,用于结束跟踪操作。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
FlushTrackingRecords(TimeSpan)

由工作流运行时调用,用于将挂起的跟踪记录发送给跟踪参与者。

GetActivitiesBlockingUpdate(Object, DynamicUpdateMap)

检索阻塞工作流更新的活动列表。

GetExtension<T>()

返回指定类型的扩展。

GetExtensions<T>()

返回针对指定类型找到的所有扩展。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
Initialize(IDictionary<String,Object>, IList<Handle>)

由主机调用,用于使用自变量值和执行属性初始化工作流实例。

Initialize(Object)

由宿主调用,用于使用工作流运行时状态初始化工作流实例。

Initialize(Object, DynamicUpdateMap)

由宿主调用,用于使用工作流运行时状态和更新映射初始化工作流实例。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
OnBeginAssociateKeys(ICollection<InstanceKey>, AsyncCallback, Object)

由工作流运行时调用,用于通知宿主新的实例键应与此实例关联。

OnBeginFlushTrackingRecords(AsyncCallback, Object)

异步调用,用于要求主机针对跟踪参与者刷新挂起的跟踪记录。

OnBeginPersist(AsyncCallback, Object)

要求宿主保留工作流的异步调用。

OnBeginResumeBookmark(Bookmark, Object, TimeSpan, AsyncCallback, Object)

由工作流运行时调用,用于通知宿主恢复书签操作已开始。

OnDisassociateKeys(ICollection<InstanceKey>)

由工作流运行时调用,用于通知宿主某些实例键集不应再与此实例关联。

OnEndAssociateKeys(IAsyncResult)

由工作流运行时调用,用于通知宿主关联键操作已完成。

OnEndFlushTrackingRecords(IAsyncResult)

由工作流运行时调用,用于在刷新跟踪记录操作完成时通知宿主。

OnEndPersist(IAsyncResult)

由工作流运行时调用,用于通知宿主保留操作已完成。

OnEndResumeBookmark(IAsyncResult)

由工作流运行时调用,用于通知宿主恢复书签操作已完成。

OnNotifyPaused()

由工作流运行时调用,用于通知宿主工作流已从“正在运行”状态转换为“已暂停”状态。

OnNotifyUnhandledException(Exception, Activity, String)

由工作流运行时调用,用于通知宿主工作流实例中发生了未经处理的异常。

OnRequestAbort(Exception)

由工作流运行时调用,用于通知宿主已请求对工作流实例进行中止操作。

RegisterExtensionManager(WorkflowInstanceExtensionManager)

由主机调用,用于注册指定的扩展管理器、验证所有必需的扩展是否存在,以及初始化要使用的扩展的集合。

ThrowIfReadOnly()

如果工作流实例已初始化,则引发 InvalidOperationException(由 IsReadOnly 确定)。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于