다음을 통해 공유


Windows Workflow 추적 서비스

Windows Workflow Foundation에서는 워크플로 관련 정보를 일관성 있고 안정적이며 융통성 있는 방식으로 추적할 수 있습니다. Windows Workflow Foundation 추적 프레임워크는 호스트에서 워크플로 실행 중에 발생한 이벤트를 캡처하여 실행 중에 워크플로 인스턴스를 관찰할 수 있게 하도록 디자인되었습니다. 이 프레임워크는 호스트에서 자체 추적 서비스를 작성하거나 기본적으로 제공되는 추적 서비스나 타사 추적 서비스를 사용할 수 있도록 하는 플러그형 디자인입니다. 또한 Windows Workflow Foundation 런타임 엔진에서는 수명 중에 몇 가지 런타임 서비스를 추가할 수 있기 때문에 서로 다른 형식의 여러 추적 서비스를 동시에 사용할 수 있습니다. 예를 들어, Windows Workflow Foundation에는 구성 가능한 양의 추적 정보를 SQL Server 데이터베이스에 기록하는 기본적으로 제공되는 SqlTrackingService 서비스가 포함되어 있습니다. Windows Workflow Foundation 샘플에는 이벤트를 수신하고 해당 이벤트를 콘솔에 출력하는 ConsoleTrackingService Sample도 포함되어 있습니다. 이러한 서비스를 함께 실행하면 개발 중에 최종 사용자가 워크플로 실행 및 디버깅 정보를 볼 수 있습니다.

Windows Workflow Foundation의 추적 기능

Windows Workflow Foundation에는 워크플로 사용 응용 프로그램에서 추적을 가능하게 하는 몇 가지 기본 제공 기능이 포함되어 있습니다.

기능 설명

추적이 일관성 있게 발생하도록 함

사용자와 응용 프로그램은 워크플로 상태와 라이브 워크플로 및 디스크에 보관된 워크플로에 대한 기록을 추적할 수 있습니다. 추적 서비스에 대한 일관성 있는 프레임워크를 통해 사용자 지정 추적 서비스가 논리적이고 일관된 패턴을 따르게 됩니다.

확장성 및 안정성 제공

추적 프레임워크는 단일 컴퓨터에 배포할 수 있을 정도로 간단하지만, 클러스터되고 분산된 데이터 센터 환경이 필요한 대부분의 엔터프라이즈 비즈니스의 요구 사항을 충족하기 위해 확장될 수도 있습니다.

기본 데이터 저장소에 관계없이 워크플로 데이터를 추적할 수 있도록 함

추적 프레임워크에서는 추적 이벤트를 관리하는 데이터 저장소를 알 수 없습니다. 최종 사용자가 추적 이벤트에 대한 제대로 정의된 스키마를 사용할 수 있지만 결국 데이터 저장소가 유지되는 기본 데이터에 대한 스키마를 제어합니다.

여러 호스팅 환경의 워크플로 관련 데이터를 쿼리하는 한 위치 제공

Windows Workflow Foundation은 여러 환경에서 호스팅될 수 있으므로 응용 프로그램에는 워크플로 정보를 쿼리할 수 있는 일관성 있는 인터페이스가 필요합니다.

이전 및 현재 워크플로 수명 주기에 대해 쿼리하고 워크플로 인스턴스의 가능한 이후 실행 경로를 결정하는 기능 제공

추적 프레임워크에서는 지침 형식 쿼리를 사용할 수 있도록 워크플로와 연결된 워크플로 정의와 메타데이터를 생성하는 방법을 제공합니다. 또한 사용자 정의 상태를 추적할 수 있도록 데이터 상태 변경 내용을 생성하는 방법도 제공합니다.

추적 프로필의 프로그래밍 방식 변경 지원

추적 프로필 개체 모델을 사용하여 추적 프로필을 만들 수 있습니다. 이를 통해 활성 워크플로의 실행 중에 필요한 경우 사용자 지정 프로필을 로드할 수 있습니다.

추적 프로필

추적 서비스는 추적 프로필을 사용하여 데이터를 필터링하는 방법으로 수신하는 데이터의 양을 결정하며 워크플로 이벤트, 활동 실행 상태 및 사용자 지정 사용자 추적 데이터 항목을 받을 수 있습니다. 또한 워크플로 인스턴스가 실행 중일 때 런타임 엔진에서 받는 데이터를 추적하는 일을 담당합니다. 추적 서비스는 파일이나 데이터베이스에 데이터를 저장하거나 메모리 내 쿼리 저장소를 만들 수 있으며 데이터를 시스템 이벤트 로그에 기록하거나 추적 데이터를 콘솔에 출력할 수 있습니다.

추적 프로필 XML 스키마를 사용하거나 추적 프로필 개체 모델을 프로그래밍 방식으로 사용하여 추적 프로필을 선언적으로 작성할 수 있습니다. 또한 TrackingProfileSerializer API를 사용하여 XML 기반 추적 프로필을 TrackingProfile 인스턴스로 deserialize할 수 있습니다.

추적 프로필에 대한 자세한 내용은 추적 프로필 만들기 및 사용을 참조하십시오.

추적 이벤트 형식

Windows Workflow Foundation에서 추적을 사용할 때 워크플로 실행 중에 발생하는 단일 이벤트나 이벤트 그룹을 추적할 수 있습니다. 활동에 대해 추적할 수 있는 이벤트는 ActivityExecutionStatus 열거형에 정의되어 있습니다.

  • Initialized

  • Executing

  • Canceling

  • Closed

  • Compensating

  • Faulting

추적 인프라에서는 활동에 대한 추적 이벤트 외에도 워크플로 인스턴스 수준에서 발생하는 이벤트도 추적할 수 있습니다. 추적할 수 있는 인스턴스 수준 이벤트는 TrackingWorkflowEvent 열거형에 정의되어 있습니다.

  • Created

  • Completed

  • Idle

  • Suspended

  • Resumed

  • Persisted

  • Unloaded

  • Loaded

  • Exception

  • Terminated

  • Aborted

  • Changed

  • Started

개별 이벤트 추적에 대한 자세한 내용은 추적 프로필 만들기 및 사용을 참조하십시오.

명시적 코드 수준 추적

워크플로와 작업을 만드는 개발자는 명시적 추적 이벤트를 사용하여 코드를 계측하려고 할 수 있습니다. 이 작업은 추적 프로필을 사용하여 원하는 추적 이벤트에 대한 런타임을 계측할 수 없는 경우에만 수행되어야 합니다.

워크플로 제작자는 ActivityExecutionContext에서 오버로드된 TrackData 메서드 중 하나를 사용하여 모든 종류의 정보를 추적할 수 있습니다. 사용자 추적 지점 수에는 제한이 없으며 추적 메서드에서 전송될 수 있는 데이터의 종류에도 제한이 없습니다. SqlTrackingService 구현에서 TrackData 메서드의 두 번째 매개 변수로 전달된 개체의 이진 serialization이 가능하지 않은 경우 저장되는 데이터는 해당 개체의 ToString 메서드를 호출한 결과입니다.

예를 들어, 다음 클래스는 활동 실행 중에 디버깅 메시지를 추적하는 데 사용할 수 있는 사용자 지정 개체입니다. 이 클래스에는 Message 속성과 추적되는 메시지가 정보 메시지, 경고 메시지, 오류 메시지 또는 최종 사용자에게 표시되지 않는 디버깅용 메시지 중 어느 것이지 알리는 MessageType 속성이 포함되어 있습니다. 또한 정적 도우미 메서드가 TrackData 메서드를 호출하는 동안 사용되는 새로 생성된 UserEventData 개체를 반환하는 데 사용됩니다.

[C#]

using System;
using System.Collections.Generic;
using System.Text;

namespace Microsoft.Samples.Workflow.TrackData
{
    [Serializable]
    public class UserEventData
    {
        private UserEventType type = 0;
        private string message = "";

        public enum UserEventType
        {
            Info = 0,
            Warning = 1,
            Error = 2,
            Debug = 4
        };

        public UserEventType MessageType
        {
            get { return type; }
            set { type = value; }
        }

        public string Message
        {
            get { return message; }
            set { message = value; }
        }

        public static UserEventData NewMessage(UserEventType type, string message)
        {
            UserEventData ret = new UserEventData();
            ret.MessageType = type;
            ret.Message = message;
            return ret;
        }
    }
}

예제에서 정의된 UserEventData 클래스를 사용자 지정 활동을 작성할 때 사용자 지정 추적 개체로 사용할 수 있습니다. UserEventData 개체를 추적하려면 TrackData 메서드를 호출하여 새 UserEventData 개체를 추적할 개체로 전달합니다. 다음 코드에서는 Execute 메서드를 재정의하여 사용자 지정 활동에서 이 작업을 수행하는 방법을 보여 줍니다.

[C#]

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
    this.TrackData(UserEventData.NewMessage(UserEventData.UserEventType.Debug, "Activity executing"));
}

사용자 지정 데이터 추적에 대한 자세한 내용은 Tracking Using User Track Points Sample을 참조하십시오.

마크업 전용 워크플로 추적

워크플로 마크업 전용 워크플로와 Windows Workflow Foundation 추적 기능을 사용하는 경우 인스턴스의 특정 이벤트/항목을 추적하려면 인스턴스를 시작하기 전에 모든 워크플로 인스턴스에서 ReloadTrackingProfiles를 사용하거나 제네릭 추적 프로필을 사용할 수 있습니다. ReloadTrackingProfiles를 사용하도록 결정하는 경우 XML BLOB에 대한 워크플로 인스턴스를 만들고 인스턴스 GUID를 가져온 다음 해당 인스턴스와 관련된 추적 프로필을 만들고 인스턴스에 프로필을 다시 로드하도록 요청해야 합니다. 추적 서비스는 인스턴스 ID를 사용하여 GetProfile이 호출될 때 이 프로필을 워크플로 런타임 엔진에 반환해야 합니다. 이때 인스턴스와 프로필 간의 상관 관계가 발생합니다.

추적 규칙

RuleSet이 실행되면 UserTrackPoint를 추적 프로필에 추가하여 추적 이벤트에 대해 등록되고 호스트에 구성된 추적 서비스로 추적 이벤트가 전송됩니다. 확인된 규칙의 이름과 조건 확인 결과(true/false)를 제공하는 RuleActionTrackingEvent가 전송됩니다. 자세한 내용은 RuleActionTrackingEvent Sample을 참조하십시오.

활동에 대한 규칙 조건의 확인 결과는 활동 실행을 추적하여 암시적으로 추적할 수 있습니다.

사용자 지정 추적 서비스

Windows Workflow Foundation에는 SQL Server 데이터베이스에 저장된 데이터를 추적하는 데 사용할 수 있는 SqlTrackingService 서비스가 포함되어 있습니다. 그러나 Windows Workflow Foundation에서 사용되는 확장성 모델 때문에 런타임 엔진에서 데이터의 최종 대상이나 데이터가 전송되는 형식을 상관하지 않으므로 로컬 파일 등의 다른 저장 매체를 사용하는 사용자 지정 추적 서비스를 만들 수 있습니다. 사용자 지정 추적 서비스를 만드는 방법에 대한 자세한 내용은 사용자 지정 추적 서비스 만들기를 참조하십시오.

단원 내용

추적 프로필 만들기 및 사용

SqlTrackingService 사용

SqlTrackingQuery로 SqlTrackingService 데이터 쿼리

SqlTrackingService로 데이터 유지 관리

참고 항목

참조

System.Workflow.Runtime.Tracking
TrackData
TrackingWorkflowEvent
ActivityExecutionStatus

개념

사용자 지정 추적 서비스 만들기

기타 리소스

Windows Workflow Foundation 서비스
연습 4: 런타임 서비스 사용
Tracking Samples
Simple Tracking Example
Tracking Using User Track Points Sample

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.