다음을 통해 공유


Workflow Monitor 샘플

Download sample

워크플로 모니터는 완료된 워크플로와 현재 실행 중인 워크플로 및 이러한 워크플로에 대한 활동 상태 정보를 표시하는 도구입니다. 이 모니터는 추적 데이터베이스에서 추적 정보를 읽고 워크플로 디자이너 컨트롤을 사용하여 현재 워크플로와 그 활동 상태 및 현재 워크플로 실행을 표시합니다.

워크플로 모니터가 제대로 작동하려면 데이터베이스에 추적 정보가 있는 워크플로 유형이 GAC에 있거나 워크플로 모니터 실행 파일과 동일한 디렉터리에 있어야 합니다. 누락된 워크플로 유형이 있는 경우에는 워크플로 정의를 로드하는 중에 오류가 발생합니다. 또한 워크플로 모니터가 워크플로 유형을 제대로 검색하도록 하려면 새 추적 데이터베이스를 만들고 워크플로를 실행해야 합니다.

추적 이벤트가 SQL 추적 데이터베이스를 추적하는 데 사용되도록 워크플로 런타임에 SQL 추적 서비스를 추가하는 방법에 대한 내용은 다음 단원을 참조하십시오.

모니터링 호스트 설정

모니터에서 워크플로 및 활동을 표시하려면 모니터가 디자이너 및 serialization 코드를 사용할 수 있어야 합니다. 모든 워크플로 유형과 활동 유형을 gacutil.exe를 사용하여 GAC(전역 어셈블리 캐시)에 등록하거나 WorkflowMonitor.exe와 동일한 디렉터리에 배치해야 합니다. 또한 SqlTrackingService 테이블에서 워크플로, 활동 정보, 워크플로 정의 등을 읽으려면 SqlTrackingQuery가 해당 워크플로 유형과 활동 유형에 액세스해야 합니다.

다음 절차에서는 워크플로 모니터 응용 프로그램에서 사용되는 추적 데이터베이스를 구성하는 방법을 보여 줍니다.

SQL 추적 데이터베이스를 만들려면

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

    CREATE DATABASE Tracking

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

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

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

  4. 실행을 클릭하거나 F5 키를 눌러 쿼리를 실행하여 SQL 추적 서비스 테이블을 만듭니다.

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

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

호스트 응용 프로그램 구성

SqlTrackingService를 사용하도록 호스트 응용 프로그램을 구성하려면 구성 파일을 사용하거나 프로그래밍 방식으로 WorkflowRuntime 서비스 컬렉션에 SqlTrackingService 서비스를 추가합니다. 서버 이름 및 데이터베이스의 ConnectionString 속성을 설정합니다. 모니터에서 사용할 수 있는 데이터를 최신 상태로 유지하도록 SqlTrackingService 서비스의 IsTransactional 속성을 false로 설정합니다. IsTransactional 속성이 true로 설정되면 정보가 데이터베이스에 기록되기 전에 일괄 처리됩니다.

프로그래밍 방식으로 SqlTrackingService 서비스를 추가하려면 다음 코드 예제를 사용하십시오.

C#:

WorkflowRuntime workflowRuntime = new WorkflowRuntime();

SqlTrackingService sqlTrackingService = new SqlTrackingService("Initial Catalog=Tracking;Data Source=localhost;Integrated Security=SSPI;");

sqlTrackingService.IsTransactional = false;

workflowRuntime.AddService(sqlTrackingService);

workflowRuntime.StartRuntime();

Visual Basic:

Dim workflowRuntime As New WorkflowRuntime()

Dim sqlTrackingService As New SqlTrackingService("Initial Catalog=Tracking;Data Source=localhost;Integrated Security=SSPI;")

sqlTrackingService.IsTransactional = false

workflowRuntime.AddService(sqlTrackingService)

workflowRuntime.StartRuntime()

구성 파일을 사용하여 SqlTrackingService 서비스를 추가하려면 호스트 응용 프로그램 코드가 구성 섹션 이름을 WorkflowRuntime 생성자에 지정하고, app.config와 같은 구성 파일에 WorkflowRuntime 구성 정보가 포함되어야 합니다. 예를 들면 다음과 같습니다.

호스트 응용 프로그램

C#:
WorkflowRuntime workflowRuntime = new WorkflowRuntime("WorkflowRuntimeConfigurationSection");
workflowRuntime.StartRuntime();

Visual Basic:
Dim workflowRuntime As New WorkflowRuntime("WorkflowRuntimeConfigurationSection")
workflowRuntime.StartRuntime()

구성 파일

<configuration>
    <configSections>
        <section name="WorkflowRuntimeConfigurationSection" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </configSections>
    <WorkflowRuntimeConfigurationSection Name="WorkflowRuntimeConfigurationSectionName" UnloadOnIdle="false">
        <Services>
            <add type="System.Workflow.Runtime.Tracking.SqlTrackingService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  ConnectionString="Initial Catalog=TrackingStore;Data Source=localhost;Integrated Security=SSPI;" IsTransactional="false" UseDefaultProfile="true" />
        </Services>
    </WorkflowRuntimeConfigurationSection>
</configuration>

모니터 사용자 인터페이스

모니터 인터페이스는 다음 세 개의 기본 창으로 구성됩니다.

  • Workflows

  • Activities

  • Workflow View

모니터는 추적된 모든 워크플로를 읽습니다. 컴퓨터 이름 및 데이터베이스를 지정하려면 Settings 대화 상자를 사용합니다. 이 대화 상자를 열려면 Monitor 메뉴에서 Settings을 클릭하거나 Settings 도구 모음 단추를 클릭하면 됩니다.

워크플로 검색 옵션 도구 모음

이 도구 모음에는 도구의 검색 옵션이 표시됩니다. 데이터 항목 값을 추적하여 검색하거나 워크플로가 특정 상태가 되는 경우 해당 상태와 시간 간격의 조합을 사용하여 검색할 수 있습니다. 워크플로 ID를 기준으로 검색할 수도 있습니다. 예를 들면, CheckCredit 활동에서 추적 데이터 항목 PurchaseAmount의 값이 500이며 어제 종료된 워크플로를 검색할 수 있습니다.

참고

기본적으로 SqlTrackingService 기본 추적 프로필은 모든 워크플로, 활동 및 사용자 추적 지점 이벤트를 추출하며 워크플로 추적 데이터는 추출하지 않습니다. 따라서 기본 추적 프로필이나 실행 중인 특정 유형과 연결된 추적 프로필 중 하나를 업데이트할 때까지는 Tracking Data Item을 기준으로 검색할 수 없습니다. 이 샘플에서 제공하는 SQL 스크립트 UpdateV1DefaultTrackingProfile.sql을 사용하면 기본 추적 프로필을 업데이트하여 활동에서 Name 속성을 추출할 수 있습니다.

추적 프로필의 다음 항목을 사용하여 이 작업을 수행합니다.

<Extracts>
    <WorkflowDataTrackingExtract>
        <Member>Name</Member>
    </WorkflowDataTrackingExtract>
</Extracts>

Workflows 창

이 창에는 추적 데이터베이스에 있는 모든 워크플로가 워크플로별 상태와 함께 표시됩니다. 워크플로를 선택하면 해당 워크플로에 대해 완료된 모든 활동과 실행 중인 모든 활동의 현재 상태가 추적 데이터베이스에 쿼리되며, 이러한 활동이 Activity 창에 표시됩니다.

Activities 창

이 창에는 워크플로 창에서 선택된 워크플로의 모든 활동과 활동 상태가 표시됩니다.

Workflow View 창

이 창에는 Windows Workflow Foundation의 일부로 제공된 워크플로 디자이너 컨트롤이 있습니다. 사용자는 이 컨트롤을 사용하여 복합 활동을 확장하거나 축소하고 워크플로 보기를 기본 뷰, 예외, 이벤트, 보정 등으로 변경할 수 있습니다. Workflow 창에서 워크플로를 선택하면 해당 워크플로의 모든 완료된 활동에 확인 표시가 나타나고 현재 실행 중인 모든 활동에 "실행" 아이콘이 나타납니다.

메뉴

워크플로 모니터의 메뉴 옵션은 다음과 같습니다.

파일 메뉴

Exit - 프로그램을 종료합니다.

보기 메뉴

Workflow Details - 이 옵션을 선택하면 Workflow 창과 Activity 창이 표시됩니다.

모니터 메뉴

Start/Stop - 모니터링을 시작하거나 중지합니다.

Settings - Settings 대화 상자를 표시합니다.

도구 모음 단추

워크플로 모니터의 도구 모음 단추는 다음과 같습니다.

  • Settings - Settings 대화 상자를 표시합니다. 자세한 내용은 아래의 "Settings" 항목을 참조하십시오.

  • Monitor On - 추적 데이터베이스 모니터링을 시작합니다. 아래의 "모니터 사용"을 참조하십시오.

  • Monitor Off - 추적 데이터베이스 모니터링을 중지합니다. 아래의 "모니터 사용"을 참조하십시오.

  • Expand All - 워크플로 보기에서 모든 복합 활동을 확장합니다.

  • Collapse All - 워크플로 보기에서 모든 복합 활동을 축소합니다.

  • Workflow Zoom Level - 워크플로 보기의 확대/축소 수준을 설정합니다.

Settings

모니터를 구성하려면 Settings 대화 상자를 사용합니다. 다음 필드를 지정할 수 있습니다.

  • SQL Server - SQL Server를 실행 중인 로컬 또는 원격 컴퓨터입니다.

  • Tracking Database - 추적 정보 저장에 사용되는 데이터베이스입니다.

  • Polling Interval - 데이터베이스를 다시 폴링할 때까지 대기할 시간(밀리초)입니다.

  • Auto-Select Latest When Polling - 이 옵션을 선택하면 Workflows 창은 실행 중인 최신 워크플로를 자동 선택합니다.

참고

서버 이름과 데이터베이스 이름은 상태 표시줄에도 나타납니다.

모니터 사용

워크플로 모니터는 추적 데이터베이스를 폴링하며 워크플로 Workflows 창과 Activities 창에 워크플로 상태와 활동을 각각 표시하고 Workflow View 창에 워크플로의 진행 상태를 자동으로 표시합니다. 모니터링을 켜려면 Monitor On 도구 모음 단추를 사용하거나 Monitor 메뉴에서 Start를 클릭합니다. 폴링 간격을 설정하려면 Settings 대화 상자를 사용합니다. 추적 데이터베이스를 모니터링할 때는 현재 실행 중인 최신 워크플로를 표시하면 유용합니다. 최신 워크플로를 표시하려면 Settings 대화 상자에서 Auto-Select Latest When Polling 확인란을 선택합니다.

참고

모니터링 기능이 켜져 있으면 상태 표시줄에 "Monitoring"이라는 글자가 나타납니다.

워크플로 모니터는 쿼리 기능에 SqlTrackingQuery API를 사용합니다. 워크플로 및 활동의 목록은 SqlTrackingQuery API를 통해 검색됩니다. 이 검색 기능에서는 SqlTrackingQuery API를 사용합니다.

동일한 워크플로 유형의 다중 정의

SqlTrackingService에서는 새 워크플로 유형을 처음 사용할 때의 워크플로 정의를 유지합니다. 그러나 정의가 변경되고 유형 버전은 그대로인 경우 추적 데이터베이스에 새 레코드가 유지되지 않습니다. 따라서 모니터는 항상 워크플로 유형의 첫 번째 정의를 표시합니다.

사용자 설정

워크플로 모니터는 SQL Server, 데이터베이스, 폴링 간격 등에 대한 설정을 \Documents and Settings\<user>\Local Settings\Application Data\Microsoft Corporation\Windows Workflow Foundation SDK Application Samples\3.0.0.0 디렉터리의 workflowmonitor.config 파일에 저장합니다.

참고 항목

참조

SqlTrackingService

기타 리소스

Using the SQLTrackingService
Task 4: Use the Windows Workflow Tracking Service
Simple Tracking 샘플
응용 프로그램 샘플

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.