Share via


WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) 方法

定义

在派生类中实现时,将工作流实例的指定状态加载回内存。

protected public:
 abstract System::Workflow::ComponentModel::Activity ^ LoadWorkflowInstanceState(Guid instanceId);
protected internal abstract System.Workflow.ComponentModel.Activity LoadWorkflowInstanceState (Guid instanceId);
abstract member LoadWorkflowInstanceState : Guid -> System.Workflow.ComponentModel.Activity
Protected Friend MustOverride Function LoadWorkflowInstanceState (instanceId As Guid) As Activity

参数

instanceId
Guid

工作流实例的根活动的 Guid

返回

一个 Activity,表示工作流实例的根活动。

示例

下面的示例演示 LoadWorkflowInstanceState 方法的实现。 此示例摘自 FilePersistenceService.cs 文件中的“自定义持久性服务”示例。 有关详细信息,请参阅 自定义持久性服务示例

// Load workflow instance state.
protected override Activity LoadWorkflowInstanceState(Guid instanceId)
{
    Console.WriteLine("Loading instance: {0}\n", instanceId);
    byte[] workflowBytes = DeserializeFromFile(instanceId);
    return WorkflowPersistenceService.RestoreFromDefaultSerializedForm(workflowBytes, null);
}
' Load workflow instance state.
Protected Overrides Function LoadWorkflowInstanceState(ByVal instanceId As System.Guid) As System.Workflow.ComponentModel.Activity
    Console.WriteLine("Loading instance: 0}" + vbLf, instanceId)
    Dim obj As Object = DeserializeFromFile(instanceId)
    Dim workflowBytes As Byte() = DeserializeFromFile(instanceId)
    Return WorkflowPersistenceService.RestoreFromDefaultSerializedForm(workflowBytes, Nothing)
End Function

注解

必须还原活动的相同副本。 为此,必须从数据存储区中工作流实例的表示形式中还原有效的 Stream;然后,必须将此 Stream 传递到重载的 Load 方法之一,用于反序列化工作流实例。 如果持久性服务无法从其数据存储区加载工作流实例状态,则它应引发带有适当消息的 PersistenceException

工作流运行时引擎实现锁定语义,限制对保存在数据存储区中的工作流实例状态的访问。 这可以通过在多个进程中运行的持久性服务进行访问。 锁定语义旨在防止运行在两个不同的进程中的持久性服务同时将相同的工作流实例加载到内存中。 根据持久性服务所支持的环境类型,可以选择是否支持此功能。 如果选择支持运行时锁定语义,并且如果此工作流实例状态先前已经由其他进程锁定,则应引发 WorkflowOwnershipException。 否则,应锁定对数据存储区中工作流实例状态的访问。 通过调用 UnlockWorkflowInstanceState,或调用 SaveWorkflowInstanceState 并将解锁参数设置为 true,可以对工作流实例状态进行解锁。

适用于