다음을 통해 공유


Using Persistence Services 샘플

Download sample

이 샘플에서는 SqlWorkflowPersistenceService 서비스를 사용하여 워크플로를 로드하고 언로드하는 방법을 보여 줍니다.

비즈니스 프로세스 중 상당수는 완료하는 데 최대 몇 개월이나 몇 년씩 오랜 시간이 걸립니다. 워크플로를 메모리에 두는 것은 메모리 제한 때문에 비현실적일 뿐만 아니라 인스턴스 처리를 하나의 서버에서 해야 하므로 확장이 불가능합니다. 이렇게 장기간 실행되는 워크플로 중 상당수는 흐름이나 프로세스 논리를 실행하지 않으며, 사용자나 다른 시스템의 입력을 기다리면서 사실상 유휴 상태에 있습니다. 유휴 인스턴스를 언로드하면 호스트 응용 프로그램에서 메모리를 절약할 수 있고, 처리 서버 간의 확장도 가능해집니다. 이 샘플에서는 5초간 대기했다가 마치는 간단한 워크플로를 통해 유휴 인스턴스를 언로드하는 방법을 보여 줍니다.

참고

생성자에서 UnloadOnIdle 매개 변수를 True로 설정하여 SqlWorkflowPersistenceService가 유휴 워크플로를 자동으로 언로드하도록 설정할 수도 있습니다.

데이터베이스 구성

Windows Workflow Foundation으로 설치되는 SQL 서비스는 Microsoft SQL Server를 사용하여 정보를 저장합니다. 이러한 작업에 Microsoft SQL Server 2005 Express, SQL Server 2000 이상 버전 또는 SQL Server 2000 Desktop Engine(MSDE)을 사용할 수 있습니다.

Windows Workflow Foundation 설치 프로그램은 이러한 서비스에 필요한 데이터베이스를 설치하지 않지만, 이러한 서비스에 대한 데이터베이스를 만들고 구성하기 위한 SQL 스크립트를 설치합니다.

참고

SqlWorkflowPersistenceService가 작동하려면 MSDTC(Microsoft Distributed Transaction Coordinator) 서비스를 사용하도록 설정해야 합니다.

다음 단계에서는 이 샘플에서 서비스에 의해 사용되는 데이터베이스를 만들고 구성하는 방법을 설명합니다.

SQL 데이터베이스를 만들고 구성하려면

  1. SQL Server 2005 Express, SQL Server 2000 이상 버전 또는 MSDE(SQL Server 2000 Desktop Engine)에서 다음과 같은 SQL 쿼리문을 사용하여 이름이 SqlPersistenceService인 새 데이터베이스를 만듭니다.

    CREATE DATABASE SqlPersistenceService

    참고   워크플로 응용 프로그램에서 SqlTrackingServiceSqlWorkflowPersistenceService를 모두 사용할 경우 데이터 유지와 추적 모두에 단일 데이터베이스를 사용하는 것이 좋습니다.

  2. SQL 쿼리 분석기 작업 영역의 사용 가능한 데이터베이스 목록에서 1단계에서 만든 데이터베이스를 선택합니다.

  3. 파일 메뉴에서 열기를 클릭하고 SQL 스크립트 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<language>\SqlPersistenceService_Schema를 엽니다.

  4. 실행을 클릭하거나 F5 키를 눌러 쿼리를 실행하여 SQL 유지 서비스 표를 만듭니다.

  5. 파일 메뉴에서 열기를 클릭하고 SQL 스크립트 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<language>\SqlPersistenceService_Logic을 엽니다.

  6. 실행을 클릭하거나 F5 키를 눌러 쿼리를 실행하여 SQL 유지 서비스 저장 프로시저를 만듭니다.

샘플 연습

이 워크플로는 code1, delay1 및 code2라는 세 활동을 차례로 포함하는 순차 워크플로입니다. CodeActivity 활동은 현재의 UTC DateTime을 콘솔에 쓰며, DelayActivity 활동은 5초간 대기했다가 계속합니다. 호스트 응용 프로그램은 다양한 WorkflowRuntime 이벤트에 대한 처리기를 제공하여 메모리를 드나드는 워크플로 인스턴스의 전체 로드와 언로드를 관리합니다.

다음과 같이 실행됩니다.

  1. 호스트에서 워크플로를 만들고 시작합니다.

  2. Code1이 현재의 UTC DateTime을 콘솔에 표시합니다.

  3. 워크플로가 delay1 활동을 시작합니다.

  4. 이제 워크플로 인스턴스는 유휴 상태에서 타이머가 만료될 때까지 대기합니다. 워크플로가 유휴 상태가 되면 WorkflowRuntime에서 WorkflowIdled 이벤트를 발생시킵니다.

  5. Unload 메서드가 워크플로 인스턴스를 유지하도록 SqlWorkflowPersistenceService 서비스를 호출합니다. 그런 다음 워크플로 런타임이 워크플로 인스턴스를 삭제합니다.

  6. 5초 이상 지나면 타이머가 만료됩니다.

  7. SqlWorkflowPersistenceService 서비스가 데이터베이스에서 워크플로를 로드하고, 런타임이 계속해서 이를 처리합니다.

  8. 그런 다음 Code2가 UTC DateTime을 콘솔에 표시합니다. 이 DateTime은 code1이 표시한 시간보다 5초 늦어야 합니다.

  9. 워크플로 인스턴스가 완료되면 워크플로 런타임은 워크플로의 최종 상태를 유지하기 위해 SqlWorkflowPersistenceService 서비스를 호출합니다.

Custom Services

이 샘플에서는 기본적으로 제공되는 상태 유지 서비스를 사용합니다. 하지만 사용자 지정 상태 유지 서비스를 만들 수도 있습니다. 현재 데이터베이스 시스템을 사용하거나 추가 기능을 제공하려면 고유의 상태 유지 서비스를 만들어야 할 수 있습니다. 사용자 지정 서비스 개발 방법에 대한 자세한 내용은 이 항목에 제시된 샘플과 Windows Workflow Foundation 설명서를 참조하십시오.

이 샘플을 빌드하려면

  1. 샘플 다운로드를 클릭하여 샘플을 다운로드합니다.

    이렇게 하면 샘플 프로젝트가 로컬 하드 디스크에 추출됩니다.

  2. 시작을 클릭하고 프로그램, Microsoft Windows SDK를 차례로 가리킨 다음 CMD 셸을 클릭합니다.

  3. 샘플의 소스 디렉터리로 이동합니다.

  4. 명령 프롬프트에서 **MSBUILD <Solution file name>**을 입력합니다.

이 샘플을 실행하려면

  • SDK 명령 프롬프트 창에서 샘플의 주 폴더 아래에 있는 PersistenceServices\bin\debug 폴더 또는 PersistenceServices\bin 폴더(VB 버전의 샘플의 경우)의 .exe 파일을 실행합니다.

참고 항목

참조

SqlWorkflowPersistenceService
WorkflowPersistenceService

기타 리소스

Custom Persistence Service 샘플
Raise Event to Load Workflow 샘플
Windows Workflow Persistence Services
Exercise 4 : Using Runtime Services
Using the SqlWorkflowPersistenceService Service
호스팅 샘플
Task 3 : Using the Windows Workflow Persistence Service

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.