일시 중단된 인스턴스 관리

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

이 샘플에서는 일시 중단된 워크플로 인스턴스를 관리하는 방법을 보여 줍니다. WorkflowUnhandledExceptionBehavior의 기본 동작은 AbandonAndSuspend입니다. 즉, 기본적으로 WorkflowServiceHost에서 호스트되는 워크플로 인스턴스에서 처리되지 않은 예외가 throw될 경우 인스턴스가 메모리에서 삭제(중단)되고 영속/지속적 버전의 인스턴스는 일시 중단된 인스턴스로 표시됩니다. 일시 중단된 워크플로 인스턴스는 일시 중단이 해제될 때까지 실행할 수 없습니다.

이 샘플에서는 일시 중단된 인스턴스를 쿼리하는 명령줄 유틸리티를 구현하는 방법과 사용자에게 해당 인스턴스를 다시 시작하거나 종료하는 옵션을 제공하는 방법을 보여 줍니다. 이 샘플에서는 워크플로 서비스가 의도적으로 예외를 throw하여 일시 중단 상태가 됩니다. 그런 다음 명령줄 유틸리티를 사용하여 인스턴스를 쿼리하고 이후에 인스턴스를 다시 시작하거나 종료할 수 있습니다.

데모

Windows WF(Workflow Foundation)에서 WorkflowUnhandledExceptionBehaviorWorkflowControlEndpoint가 있는 WorkflowServiceHost

추가 설명

이 샘플에서 구현하는 명령줄 유틸리티는 .NET Framework 버전 4에서 제공되는 SQL 인스턴스 저장소 구현에 따라 다릅니다. 인스턴스 저장소의 사용자 지정 구현이 있는 경우 샘플의 WorkflowInstanceCommand 구현을 현재 인스턴스 저장소와 관련된 구현으로 바꿔 이 유틸리티를 적용할 수 있습니다.

제공된 구현에서는 SQL 인스턴스 저장소에 대해 직접 SQL 명령을 실행하여 일시 중단된 인스턴스를 나열하고, 인스턴스를 다시 시작하거나 종료하기 위해 WorkflowServiceHost에 추가된 WorkflowControlEndpoint를 사용합니다.

샘플을 설치, 빌드 및 실행하려면

  1. 이 샘플에는 다음과 같은 Windows 구성 요소를 사용해야 합니다.

    1. MSMQ(Microsoft Message Queue) Server

    2. SQL Server Express

  2. SQL Server 데이터베이스를 설정합니다.

    1. Visual Studio 2010 명령 프롬프트에서 SuspendedInstanceManagement 샘플 디렉터리의 “setup.cmd”를 실행하여 다음 작업을 수행합니다.

      1. SQL Server Express를 사용하여 지속성 데이터베이스를 만듭니다. 지속성 데이터베이스가 이미 있으면 삭제된 다음 다시 만들어집니다.

      2. 지속성 데이터베이스를 설정합니다.

      3. 지속성 데이터베이스를 설정할 때 정의된 InstanceStoreUsers 역할에 IIS APPPOOL\DefaultAppPool 및 NT AUTHORITY\Network Service를 추가합니다.

  3. 서비스 큐를 설정합니다.

    1. Visual Studio 2010에서 SampleWorkflowApp 프로젝트를 마우스 오른쪽 단추로 클릭하고 시작 프로젝트로 설정을 클릭합니다.

    2. F5 키를 눌러 SampleWorkflowApp를 컴파일하고 실행합니다. 이렇게 하면 필요한 큐가 만들어집니다.

    3. Enter 키를 눌러 SampleWorkflowApp를 중지합니다.

    4. 명령 프롬프트에서 Compmgmt.msc를 실행하여 컴퓨터 관리 콘솔을 엽니다.

    5. 서비스 및 응용 프로그램, 메시지 큐개인 큐를 확장합니다.

    6. ReceiveTx 큐를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

    7. 보안 탭을 선택하고 Everyone메시지 받기, 메시지 보기메시지 보내기 권한을 갖도록 허용합니다.

  4. 이제 샘플을 실행합니다.

    1. Visual Studio 2010에서 Ctrl+F5를 눌러 디버깅 없이 SampleWorkflowApp 프로젝트를 다시 실행합니다. 두 끝점 주소가 콘솔 창에 출력됩니다. 이 주소 중 하나를 응용 프로그램 끝점에 대한 주소이고, 다른 하나는 WorkflowControlEndpoint의 주소입니다. 그런 다음 워크플로 인스턴스가 만들어지고, 해당 인스턴스에 대한 추적 레코드가 콘솔 창에 나타납니다. 워크플로 인스턴스를 예외를 throw하며, 인스턴스가 일시 중단되고 중단됩니다.

    2. 명령줄 유틸리티를 사용하여 모든 인스턴스에 대해 추가 동작을 수행할 수 있습니다. 명령줄 인수에 대한 구문은 다음과 같습니다.

      SuspendedInstanceManagement -Command:[CommandName] -Server:[ServerName] -Database:[DatabaseName] -InstanceId:[InstanceId]

      지원되는 명령은 Query, ResumeTerminate이며, InstanceId 스위치는 ResumeTerminate 작업에만 필요합니다.

정리하려면(옵션)

  1. vs2010 명령 프롬프트에서 Compmgmt.msc를 실행하여 컴퓨터 관리 콘솔을 엽니다.

  2. 서비스 및 응용 프로그램, 메시지 큐개인 큐를 확장합니다.

  3. ReceiveTx 큐를 삭제합니다.

  4. 지속성 데이터베이스를 제거하려면 cleanup.cmd를 실행합니다.

Ee960225.Important(ko-kr,VS.100).gif 참고:
컴퓨터에 이 샘플이 이미 설치되어 있을 수도 있습니다. 계속하기 전에 다음(기본) 디렉터리를 확인하십시오.

<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\Application\SuspendedInstanceManagement