다음을 통해 공유


ConsoleTrackingService 샘플

Download sample

이 샘플에서는 추적 서비스를 만들고 추적 데이터의 내용을 콘솔에 쓰는 방법을 보여 줍니다.

Windows Workflow Foundation에서 제공하는 추적 인프라를 통해 응용 프로그램은 워크플로 상태 변경 사항과 데이터를 추적할 수 있습니다. Windows Workflow Foundation를 사용하면 사용자는 자신의 비즈니스 요구에 가장 적합한 추적 서비스를 만들고 이러한 추적 서비스를 워크플로 런타임에서 사용할 수 있습니다.

추적 서비스를 쓰려면 추적 채널과 추적 서비스를 구현해야 합니다. 추적 채널은 런타임에서 전송한 추적 레코드를 수신하고, 추적 서비스는 특정 매개 변수와 조건에 기반한 추적 프로필을 런타임에 제공합니다. 추적 서비스는 런타임에서 전송한 데이터를 수신하는 추적 채널을 제공하는 역할도 합니다.

참고

추적 데이터의 시간 값은 협정 세계시(그리니치 표준시)입니다.

샘플 개요

이 샘플은 워크플로 한 개와 간단한 추적 서비스가 포함된 워크플로 콘솔 응용 프로그램입니다. SampleWorkflow는 코드 처리기가 있는 워크플로이며, 여기서 UserTrackPoint가 생성됩니다.

전체 추적 서비스는 ConsoleTrackingService.cs에 구현되며, 이 서비스는 다음 TrackingChannelSample 및 ConsoleTrackingService 구현을 가집니다.

  • TrackingChannelSample은 다음과 같이 Send 메서드를 구현합니다.

    public override void Send(TrackingRecord record)
    {
        // Filter on record type.
        if (record is WorkflowTrackingRecord)
        {
            WriteWorkflowTrackingRecord((WorkflowTrackingRecord)record);
        }
        if (record is ActivityTrackingRecord)
        {
            WriteActivityTrackingRecord((ActivityTrackingRecord)record);
        }
        if (record is UserTrackingRecord)
        {
            WriteUserTrackingRecord((UserTrackingRecord)record);
        }
    }
    

이외에도 TrackingChannelSample은 콘솔에 메시지를 써서 InstanceCompletedOrTerminated 메서드를 구현합니다. 추적 런타임에서 InstanceCompletedOrTerminated 메서드를 호출하여 워크플로 인스턴스와 연결된 추적 프로필과 관계없이 이 인스턴스가 실행 종료했음을 나타냅니다.

  • ConsoleTrackingService는 다음 메서드를 구현합니다.

    public override TrackingChannel GetTrackingChannel(TrackingParameters parameters)
    {
        //Return a tracking channel to receive runtime events.
        return new TrackingChannelSample(parameters);
    }
    

이 샘플을 빌드하려면

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

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

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

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

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

이 샘플을 실행하려면

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

고급 항목

다음 항목은 샘플에서 구현되지 않습니다. 이는 탐색할 추가 고급 워크플로 항목에 대한 포인터입니다.

런타임과 추적 서비스 통신

추적 서비스에 대한 런타임 호출은 동기적입니다. 추적 서비스 메서드에서 돌아올 때까지 워크플로 실행이 차단됩니다.

프로필 업데이트

Windows Workflow Foundation에서 사용자는 자신의 요구에 맞게 다음과 같이 IProfileNotification에서 파생시키고 이벤트 처리기를 구현하여 프로필 업데이트 또는 제거를 추적 런타임에 전달할 수 있습니다.

public class ConsoleTrackingService : TrackingService, IProfileNotification

public event EventHandler<ProfileUpdatedEventArgs> ProfileUpdated;
public event EventHandler<ProfileRemovedEventArgs> ProfileRemoved;

ReloadProfiles

특정 워크플로 인스턴스에 대해 프로필을 다시 로드하려면 다음과 같이 이 인스턴스에 대해 ReloadTrackingProfiles를 호출합니다.

WorkflowInstance wi = wr.StartWorkflow(typeof(SampleWorkflow));
wi.ReloadTrackingProfiles();

그러면 런타임은 등록된 TrackingService에 대해 TryReloadProfile 메서드를 호출하여 해당 인스턴스에 대한 새 프로필을 가져옵니다.

GetProfile 오버로드

워크플로 런타임은 특정 workflowInstanceId에 대한 프로필을 요청하기 위해 다음 메서드를 호출합니다. 인스턴스별 프로필 재로드를 지원하는 경우 이 메서드를 구현하십시오.

GetProfile(Guid workflowInstanceId)

워크플로 런타임은 버전별 프로필을 요청하기 위해 다음 메서드를 호출합니다. 버전별 프로필 재로드를 지원하는 경우 이 메서드를 구현하십시오.

GetProfile(Type workflowType, Version profileVersionId)

참고 항목

참조

ActivityTrackingRecord
WorkflowTrackingRecord
IProfileNotification

기타 리소스

추적 샘플
Simple Tracking 샘플
Query Using SQLTrackingService 샘플
Tracking Using User Track Points 샘플
EventArgs Tracking 샘플
Query Using SQLTrackingService 샘플
RuleActionTrackingEvent 샘플
File Tracking Service and Query 샘플
Using the Tracking Profile Object Model 샘플
SQL Data Maintenance 샘플
Windows Workflow Tracking Services

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.