다음을 통해 공유


WorkflowPersistenceService.LoadCompletedContextActivity 메서드

정의

파생 클래스에서 구현되는 경우 지정한 완료된 범위를 다시 메모리에 로드합니다.

protected public:
 abstract System::Workflow::ComponentModel::Activity ^ LoadCompletedContextActivity(Guid scopeId, System::Workflow::ComponentModel::Activity ^ outerActivity);
protected internal abstract System.Workflow.ComponentModel.Activity LoadCompletedContextActivity (Guid scopeId, System.Workflow.ComponentModel.Activity outerActivity);
abstract member LoadCompletedContextActivity : Guid * System.Workflow.ComponentModel.Activity -> System.Workflow.ComponentModel.Activity
Protected Friend MustOverride Function LoadCompletedContextActivity (scopeId As Guid, outerActivity As Activity) As Activity

매개 변수

scopeId
Guid

완료된 범위의 Guid입니다.

outerActivity
Activity

완료된 범위를 포함하는 활동을 나타내는 Activity입니다.

반환

Activity

완료된 범위를 나타내는 Activity입니다.

예제

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

// Load the completed activity state.
protected override Activity LoadCompletedContextActivity(Guid activityId, Activity outerActivity)
{
    Console.WriteLine("Loading completed activity context: {0}", activityId);
    byte[] workflowBytes = DeserializeFromFile(activityId);
    Activity deserializedActivities = WorkflowPersistenceService.RestoreFromDefaultSerializedForm(workflowBytes, outerActivity);
    return deserializedActivities;
}
' Load completed activity state.
Protected Overrides Function LoadCompletedContextActivity(ByVal scopeId As System.Guid, ByVal outerActivity As System.Workflow.ComponentModel.Activity) As System.Workflow.ComponentModel.Activity
    Console.WriteLine("Loading completed activity context: 0}", scopeId)
    Dim workflowBytes As Byte() = DeserializeFromFile(scopeId)
    Dim deserializedActivities As Activity = WorkflowPersistenceService.RestoreFromDefaultSerializedForm(workflowBytes, outerActivity)
    Return deserializedActivities
End Function

설명

워크플로 런타임 엔진은 LoadCompletedContextActivity를 사용하여 보정을 구현합니다. 완료된 범위의 동일한 복사본을 복원해야 합니다. 이렇게 하려면 데이터 저장소에 있는 완료된 범위의 표현에서 올바른 Stream을 복원해야 합니다. 그런 다음 이 StreamLoad의 오버로드된 메서드 중 하나로 전달하여 범위의 deserialization을 수행해야 합니다.

지속성 서비스는 데이터 저장소에서 완료된 범위를 로드할 수 없는 경우 해당 메시지와 함께 PersistenceException을 throw해야 합니다.

적용 대상