WorkflowPersistenceService.LoadWorkflowInstanceState(Guid) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파생 클래스에서 구현되는 경우 지정된 워크플로 인스턴스 상태를 다시 메모리에 로드합니다.
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
매개 변수
반환
워크플로 인스턴스의 루트 활동을 나타내는 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
를 호출하여 워크플로 인스턴스 상태를 잠금 해제할 수 있습니다.