방법: 워크플로 및 워크플로 서비스에 지속성 사용
이 항목은 Windows Workflow Foundation 4에 적용됩니다.
이 항목에서는 워크플로 및 워크플로 서비스에 대해 지속성을 사용하도록 설정하는 방법에 대해 설명합니다.
워크플로에 대해 지속성 사용
WorkflowApplication 클래스의 InstanceStore 속성을 사용하여 인스턴스 저장소를 WorkflowApplication에 연결할 수 있습니다. Persist 메서드는 응용 프로그램에 연결된 인스턴스 저장소에 워크플로를 저장하거나 유지합니다. Unload 메서드는 인스턴스 저장소에 워크플로를 유지한 다음 메모리에서 인스턴스를 언로드합니다. Load 메서드는 인스턴스 지속성 저장소에 저장된 워크플로 데이터를 사용하여 워크플로를 메모리로 로드합니다.
Persist 메서드는 다음 단계를 수행합니다.
워크플로 스케줄러를 일시 중지하고 워크플로가 유휴 상태로 전환될 때까지 기다립니다.
워크플로를 지속성 저장소에 유지하거나 저장합니다.
워크플로 스케줄러를 다시 시작합니다.
Unload 메서드는 다음 단계를 수행합니다.
워크플로 스케줄러를 일시 중지하고 워크플로가 유휴 상태로 전환될 때까지 기다립니다.
워크플로를 지속성 저장소에 유지하거나 저장합니다.
워크플로 인스턴스를 메모리에서 삭제합니다.
워크플로가 비지속성 영역에 있는 경우에는 워크플로가 비지속성 영역을 종료할 때까지 Persist 메서드와 Unload 메서드가 모두 차단됩니다. 비지속성 영역이 완료되면 메서드에서 지속 또는 언로드 작업을 계속합니다. 제한 시간이 경과할 때까지 비지속성 영역이 완료되지 않거나 지속성 프로세스가 너무 오래 걸릴 경우 TimeoutException이 throw됩니다.
워크플로 서비스에 대해 지속성 사용
WorkflowServiceHost 클래스의 DurableInstancingOptions 멤버는 인스턴스 저장소를 WorkflowServiceHost에 연결하는 데 사용할 수 있는 InstanceStore 속성이 있습니다.
// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();
WorkflowServiceHost를 열 때 DurableInstancingOptions.InstanceStore가 null이 아니면 지속성이 자동으로 설정됩니다.
일반적으로 서비스 동작은 InstanceStore 속성을 사용하여 워크플로 서비스 호스트에 사용할 구체적인 인스턴스 저장소를 제공합니다. 예를 들어 SqlWorkflowInstanceStoreBehavior는 SqlWorkflowInstanceStore 인스턴스를 만들고 구성한 다음 DurableInstancingOptions.InstanceStore에 할당합니다.