Windows ワークフロー追跡サービス
Windows Workflow Foundation では、ワークフロー関連の情報を、一貫性、信頼性、柔軟性のある方法で追跡できます。Windows Workflow Foundation の追跡フレームワークは、ワークフロー実行中に発生するイベントをキャプチャすることによって、実行中のワークフロー インスタンスをホストが監視できるように設計されています。このフレームワークは、プラグインできるように設計されており、これによってホストは独自の追跡サービスを作成したり、事前に定義されている追跡サービスやサードパーティの追跡サービスを使用することができます。また、Windows Workflow Foundation ランタイム エンジンでは、有効期間中に複数のランタイム サービスを追加できるため、種類の異なる複数の追跡サービスを同時に有効にすることができます。たとえば、Windows Workflow Foundation には、構成可能な量の追跡情報を SQL Server データベースに書き込む、事前に定義された SqlTrackingService サービスが含まれています。また、Windows Workflow Foundation のサンプルには、イベントをリッスンし、そのイベントをコンソールに出力するサンプル「ConsoleTrackingService Sample」が含まれています。この 2 つのサービスを併用すると、エンド ユーザーがワークフローの実行を参照することも、開発中にデバッグ情報を参照することもできます。
Windows Workflow Foundation の追跡機能
Windows Workflow Foundation には、ワークフロー対応アプリケーション内の追跡を可能にする組み込み機能があります。
機能 | 説明 |
---|---|
常に一貫性のある方法で追跡を行う |
ユーザーおよびアプリケーションは、実行中のワークフローとディスクにアーカイブされたワークフローの両方について状態と履歴を追跡できます。追跡サービスの一貫したフレームワークによって、カスタム追跡サービスは、確実に論理的かつ一貫したパターンで実行することができます。 |
スケーラビリティと信頼性を提供 |
追跡フレームワークは、1 台のコンピュータ上で展開できるほど軽量ですが、クラスタ化された分散データ センター環境を必要とする場合など、ほとんどの企業規模のビジネス要求に対応できます。 |
基になるデータ ストアに関係なくワークフロー データの追跡が可能 |
追跡フレームワークは、追跡イベントを管理するデータ ストアに依存しません。エンド ユーザーは、追跡イベント用に適切に定義されたスキーマを利用できます。ただし、基になる永続性データのスキーマは、最終的にはデータ ストアによって管理されます。 |
ワークフロー関連データの照会先をホスト環境全体で 1 つに |
Windows Workflow Foundation は、複数の環境内でホストできます。アプリケーションには、ワークフロー情報を照会するための一貫したインターフェイスが必要です。 |
過去および現在のワークフローのライフサイクルについて照会し、ワークフロー インスタンスの将来の可能な実行パスを特定する機能を提供 |
追跡フレームワークは、ワークフロー定義と、ワークフローに関連したメタデータを出力する方法を提供しているため、ガイダンス タイプの照会が可能です。また、ユーザー定義の状態を追跡するために、データ状態の変化を出力する方法も提供します。 |
追跡プロファイルへのプログラムによる変更をサポート |
追跡プロファイルは、追跡プロファイル オブジェクト モデルを使用して作成できます。これにより、アクティブ ワークフローの実行中に、必要に応じてカスタム プロファイルを読み込むことができます。 |
追跡プロファイル
追跡サービスでは、受信したデータを追跡プロファイルを使用してフィルタリングすることにより、受信したデータ量を確認します。追跡サービスは、ワークフロー イベント、アクティビティの実行状態、およびカスタム ユーザー追跡データ項目を受け取ります。追跡サービスは、ワークフロー インスタンスの実行中に、ランタイム エンジンから受け取った追跡データを処理します。つまり、データをファイルまたはデータベースに保存する、メモリ内にクエリ ストアを作成する、追跡データをシステム イベント ログに書き込む、あるいは単にコンソールに出力するといった処理を行います。
追跡プロファイルは、追跡プロファイル XML スキーマを使用して宣言的に作成するか、または追跡プロファイル オブジェクト モデルを使用してプログラムで作成します。また、XML ベースの追跡プロファイルは、TrackingProfileSerializer API を使用すると、TrackingProfile インスタンスに逆シリアル化できます。
追跡プロファイルの詳細については、「追跡プロファイルの作成と使用」を参照してください。
イベントの種類の追跡
Windows Workflow Foundation の追跡機能を使用すると、ワークフロー実行中に発生する 1 つのイベント、またはイベント グループを追跡できます。アクティビティについて追跡できるイベントは、ActivityExecutionStatus 列挙体で定義されています。
Initialized
Executing
Canceling
Closed
Compensating
Faulting
追跡インフラストラクチャによって、アクティビティのイベント追跡のほかに、ワークフロー インスタンス レベルで発生するイベントを追跡することもできます。追跡できるインスタンス レベルのイベントは、TrackingWorkflowEvent 列挙体で定義されています。
Created
Completed
Idle
Suspended
Resumed
Persisted
Unloaded
Loaded
Exception
Terminated
Aborted
Changed
Started
個々のイベントの追跡については、「追跡プロファイルの作成と使用」を参照してください。
明示的なコード レベルの追跡
ワークフローおよびタスクをビルドする開発者は、コード内で明示的にイベントを追跡することもできます。ただし、これを行うのは、目的の追跡イベントにランタイムで対応するために追跡プロファイルを使用できない場合だけにしてください。
ワークフロー作成者は、ActivityExecutionContext のオーバーロードされた TrackData メソッドの 1 つを使用して、任意の情報を追跡できます。ユーザー追跡ポイントの数に制限はありません。追跡メソッドから送信できるデータの種類についても制限はありません。SqlTrackingService の実装では、TrackData メソッドの 2 番目のパラメータに渡されたオブジェクトをバイナリでシリアル化できない場合、保存されるデータは、このオブジェクトの 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 を追跡プロファイルに追加することによって行われます。RuleActionTrackingEvent が送信されます。これにより、評価されたルールの名前および条件評価結果 (真または偽) が提供されます。詳細については、「RuleActionTrackingEvent Sample」を参照してください。
アクティビティに対するルール条件の評価結果は、アクティビティの実行を追跡することで暗黙に追跡できます。
カスタム追跡サービス
Windows Workflow Foundation に含まれる SqlTrackingService サービスを使用すると、SQL Server データベースに保管されているデータを追跡できます。ただし、Windows Workflow Foundation が使用する拡張モデルにより、ローカル ファイルなどの別のストレージ メディアを使用するカスタム追跡サービスを作成することもできます。これは、ランタイム エンジンが、データの最終目的地や配信されるデータの形式を考慮しないためです。カスタム追跡サービスの作成方法の詳細については、「カスタム追跡サービスの作成」を参照してください。
このセクションの内容
SqlTrackingQuery による SqlTrackingService データの照会
関連項目
参照
System.Workflow.Runtime.Tracking
TrackData
TrackingWorkflowEvent
ActivityExecutionStatus
概念
その他の技術情報
Windows Workflow Foundation サービス
演習 4: ランタイム サービスの使用
Tracking Samples
Simple Tracking Example
Tracking Using User Track Points Sample
Copyright © 2007 by Microsoft Corporation.All rights reserved.