다음을 통해 공유


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

워크플로 인스턴스의 루트 활동을 나타내는 Activity입니다.

예제

다음 예제에서는 LoadWorkflowInstanceState 메서드의 구현 방법을 보여 줍니다. 이 예제는 FilePersistenceService.cs 파일에 있는 Custom Persistence Service 샘플의 일부입니다. 자세한 내용은 Custom Persistence Service 샘플합니다.

// 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을 throw해야 합니다.

워크플로 런타임 엔진은 잠금 의미 체계를 구현하여 데이터 저장소에 저장된 워크플로 인스턴스 상태에 대한 액세스를 제한합니다. 워크플로 인스턴스 상태는 여러 프로세스에서 실행되는 지속성 서비스로 액세스할 수 있습니다. 잠금 의미 체계는 두 개의 다른 프로세스에서 실행되는 지속성 서비스가 동일한 워크플로 인스턴스를 동시에 메모리에 로드할 수 없도록 디자인되었습니다. 지속성 서비스가 지원하도록 디자인된 환경 유형에 따라 이 기능의 지원 여부를 선택할 수 있습니다. 런타임 잠금 의미 체계를 지원하도록 선택하면 이 워크플로 인스턴스 상태가 이전에 다른 프로세스에서 잠긴 경우 WorkflowOwnershipException을 throw해야 합니다. 그렇지 않으면 데이터 저장소의 워크플로 인스턴스 상태에 대한 액세스를 잠가야 합니다. UnlockWorkflowInstanceState를 호출하거나 unlock 매개 변수를 SaveWorkflowInstanceState로 설정하고 true를 호출하여 워크플로 인스턴스 상태를 잠금 해제할 수 있습니다.

적용 대상