SQLStoreExtensibility
이 항목은 Windows Workflow Foundation 4에 적용됩니다.
이 샘플에서는 SQL 워크플로 인스턴스 저장소에서 승격된 속성을 사용하고 구성하는 방법을 보여 줍니다. SQL 워크플로 인스턴스 저장소는 인스턴스 저장소의 SQL 기반 구현이며, 이 저장소를 사용하면 인스턴스가 SQL Server 또는 SQL Server Express 데이터베이스 간에 인스턴스 상태를 저장하고 로드할 수 있습니다. 저장소 확장성 기능을 사용하면 사용자가 인스턴스 저장소에 저장되는 속성을 정의할 수 있습니다. 이러한 속성은 승격된 속성 뷰에 표시되며 사용자는 이 뷰에서 속성을 쿼리할 수 있습니다.
이 샘플은 계산 서비스를 구현하는 워크플로로 구성되어 있습니다. 서비스의 시작 메서드를 호출하면 서비스는 0부터 29까지 계산합니다. 카운터는 2초 간격으로 증가하고, 각 계산 후에 워크플로가 지속됩니다. 현재 카운터 값은 인스턴스 저장소에 승격된 속성으로 저장됩니다.
계산 워크플로는 워크플로 서비스 호스트에서 자체 호스팅합니다. 프로그램의 Main
메서드는 다음 동작을 수행합니다.
계산 워크플로를 호스팅하는 워크플로 서비스 호스트의 인스턴스를 만들고 계산 워크플로가 도달할 수 있는 끝점을 정의합니다.
SQL 워크플로 인스턴스 저장소를 구성하는 데 사용되는 SQL 워크플로 인스턴스 저장소 동작을 정의합니다.
CountStatus
를 승격된 속성으로 처리하도록 저장소에 지시합니다.계산 워크플로의 시작 메서드를 호출하는 클라이언트를 만듭니다.
프로그램을 시작하면 카운터가 자동으로 계산을 시작합니다. 인스턴스를 로드하고 SQL 워크플로 인스턴스 저장소를 구성하는 데는 몇 초 정도 걸릴 수 있습니다.
카운터 값을 사용자 지정 속성으로 승격하려면 다음 단계를 수행해야 합니다.
클래스
CounterStatus
는 활동이 상태 변수를 제공하는 데 사용하는 PersistenceParticipant 형식의 인스턴스 확장을 정의합니다.Count
는 쓰기 전용 값으로 정의됩니다. 워크플로 인스턴스가 유지 지점에 도달할 경우 인스턴스 확장은Count
속성을 지속성 데이터 컬렉션에 저장합니다.인스턴스 저장소를 만들 때 새 속성인
CountStatus
는store.Promote()
메서드를 통해 정의됩니다.워크플로의
SaveCounter
활동은 현재 카운터 값을Count
상태 필드에 할당합니다.
이 샘플을 사용하려면
인스턴스 저장소 데이터베이스를 만듭니다.
Visual Studio 2010 명령 프롬프트를 엽니다.
샘플 디렉터리(\WF\Basic\Persistence\SqlStoreExtensibility\CS)로 이동하고 Visual Studio 2010 명령 프롬프트에서 CreateInstanceStore.cmd를 실행합니다.
주의: CreateInstanceStore.cmd 스크립트가 SQL Server 2008 Express의 기본 인스턴스에 데이터베이스를 만들려고 시도합니다. 다른 인스턴스에 데이터베이스를 설치하려면 스크립트를 수정합니다.
Visual Studio 2010을 열고 SqlStoreExtensibility.sln 솔루션을 로드한 다음 F6 키를 눌러 솔루션을 빌드합니다.
주의: SQL Server의 기본 인스턴스가 아닌 인스턴스에 데이터베이스를 설치한 경우 솔루션을 빌드하기 전에 코드에서 연결 문자열을 업데이트합니다. Windows 탐색기에서 프로젝트의 bin 디렉터리(\WF\Basic\Persistence\SqlStoreExtensibility\bin\Debug)로 이동하고 SqlStoreExtensibility.exe를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택하여 관리자 권한으로 샘플을 실행합니다.
샘플이 올바르게 작동하고 있는지 확인하려면
개체 탐색기에서 데이터베이스, InstanceStore, System.ServiceModel.Activities.DurableInstancing.InstanceTable을 차례로 선택하여 SQL Server Management Studio를 통해 인스턴스 테이블의 내용을 보고, System.ServiceModel.Activities.DurableInstancing.InstanceTable을 마우스 오른쪽 단추로 클릭하고, 상위 1000개의 행 선택을 선택합니다. SQL Server Management Studio에 대한 자세한 내용은 SQL Server Management Studio 소개를 참조하십시오.
나열된 워크플로 인스턴스를 확인합니다.
Visual Studio 2010 명령 프롬프트에서 샘플 디렉터리(\WF\Basic\Persistence\SqlStoreExtensibility)에 있는 QueryInstanceStore.cmd 스크립트를 실행합니다.
CountStatus 아래에 표시된 카운터 값을 확인합니다.
스크립트를 몇 번 실행하여 CountStats 값이 어떻게 변경되는지 확인합니다.
Enter 키를 눌러 워크플로 응용 프로그램을 종료합니다.
샘플을 제거하려면
- 샘플 디렉터리(\WF\Basic\Persistence\SqlStoreExtensibility)에 있는 RemoveInstanceStore.cmd 스크립트를 실행하여 인스턴스 저장소 데이터베이스를 제거합니다.
참고: |
---|
컴퓨터에 이 샘플이 이미 설치되어 있을 수도 있습니다. 계속하기 전에 다음(기본) 디렉터리를 확인하십시오.
<InstallDrive>:\WF_WCF_Samples
이 디렉터리가 없으면 Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4로 이동하여 WCF(Windows Communication Foundation) 및 WF 샘플을 모두 다운로드하십시오. 이 샘플은 다음 디렉터리에 있습니다.
<InstallDrive>:\WF_WCF_Samples\WF\Basic\Persistence\SQLStoreExtensibility
|