다음을 통해 공유


지속성 참석자

이 항목은 Windows Workflow Foundation 4에 적용됩니다.

지속성 참가자는 응용 프로그램 호스트에서 트리거된 지속성 작업(저장 또는 로드)에 참가할 수 있습니다. .NET Framework 버전 4는 지속성 참가자를 만드는 데 사용할 수 있는 PersistenceParticipantPersistenceIOParticipant라는 두 가지 추상 클래스와 함께 제공됩니다. 지속성 참가자는 이 클래스 중 하나에서 파생되고 관련 메서드를 구현한 다음 클래스의 인스턴스를 WorkflowServiceHostWorkflowExtensions 컬렉션에 추가합니다. 응용 프로그램 호스트는 워크플로 인스턴스를 지속할 때 이 워크플로 확장을 검색하고 적당한 시간에 지속성 참가자에서 해당 메서드를 호출합니다.

다음 목록에서는 유지(저장) 작업의 여러 단계에서 지속성 하위 시스템이 수행하는 작업을 설명합니다. 지속성 참가자는 세 번째 단계와 네 번째 단계에서 사용됩니다. 참가자가 IO 참가자(IO 작업에도 참가하는 지속성 참가자)인 경우 이 참가자는 여섯 번째 단계에서도 사용됩니다.

  1. 워크플로 상태, 책갈피, 매핑된 변수 및 타임스탬프 등 기본 제공 값을 수집합니다.

  2. 워크플로 인스턴스와 연결된 확장 수집에 추가된 모든 지속성 참가자를 수집합니다.

  3. 모든 지속성 참가자에서 구현된 CollectValues 메서드를 호출합니다.

  4. 모든 지속성 참가자에서 구현된 MapValues 메서드를 호출합니다.

  5. 워크플로를 지속성 저장소에 유지하거나 저장합니다.

  6. 모든 지속성 IO 참가자에서 BeginOnSave 메서드를 호출합니다. 참가자가 IO 참가자가 아닌 경우 이 작업을 건너뜁니다. 지속성 에피소드가 트랜잭션인 경우 이 트랜잭션은 Transaction.Current 속성에서 제공됩니다.

  7. 모든 지속성 참가자가 완료될 때까지 기다립니다. 모든 참가자가 인스턴스 데이터 유지에 성공하면 트랜잭션을 커밋합니다.

지속성 참가자는 PersistenceParticipant 클래스에서 파생되며 CollectValuesMapValues 메서드를 구현할 수 있습니다. 지속성 IO 참가자는 PersistenceIOParticipant 클래스에서 파생되며 CollectValuesMapValues 메서드를 구현할 뿐 아니라 BeginOnSave 메서드도 구현할 수 있습니다.

각 단계는 다음 단계가 시작되기 전에 완료됩니다. 예를 들어, 첫 번째 단계에서는 모든 지속성 참가자에서 값을 수집합니다. 두 번째 단계에서는 첫 번째 단계에서 수집한 모든 값을 모든 지속성 참가자에게 제공합니다. 세 번째 단계에서는 첫 번째 단계와 두 번째 단계에서 수집하고 매핑한 모든 값을 지속성 공급자에게 제공하며, 이후에도 같은 방식으로 계속됩니다.

다음 목록에서는 로드 작업의 여러 단계에서 지속성 하위 시스템이 수행하는 작업을 설명합니다. 지속성 참가자는 네 번째 단계에서 사용됩니다. 지속성 IO 참가자(IO 작업에도 참가하는 지속성 참가자)는 세 번째 단계에서도 사용됩니다.

  1. 워크플로 인스턴스와 연결된 확장 수집에 추가된 모든 지속성 참가자를 수집합니다.

  2. 지속성 저장소에서 워크플로를 로드합니다.

  3. 모든 지속성 IO 참가자에서 BeginOnLoad를 호출하고 모든 지속성 참가자가 완료될 때까지 기다립니다. 지속성 에피소드가 트랜잭션인 경우 이 트랜잭션은 Transaction.Current에서 제공됩니다.

  4. 지속성 저장소에서 검색한 데이터를 기반으로 메모리에 워크플로 인스턴스를 로드합니다.

  5. 각 지속성 참가자에서 PublishValues를 호출합니다.

지속성 참가자는 PersistenceParticipant 클래스에서 파생되며 PublishValues 메서드를 구현할 수 있습니다. 지속성 IO 참가자는 PersistenceIOParticipant 클래스에서 파생되며 PublishValues 메서드를 구현할 뿐 아니라 BeginOnLoad 메서드도 구현할 수 있습니다.

단원 내용

참고 항목

개념

저장소 확장성