ConsoleTrackingService のサンプル

Download sample

このサンプルは、追跡サービスを作成し、追跡したデータをコンソールに出力する方法を示します。

Windows Workflow Foundation は、ワークフローの状態変更とデータをアプリケーションによって追跡できるようにするためのインフラストラクチャを提供します。また、特定のビジネス ニーズに最適な追跡サービスを作成し、作成した追跡サービスをワークフロー ランタイムで使用できる柔軟性も備えています。

追跡サービスを作成するには、追跡チャネルと追跡サービスを実装する必要があります。追跡チャネルは、ランタイムから送信される追跡レコードを受け取ります。追跡サービスは、特定のパラメータと条件に基づいて、ランタイムに追跡プロファイルを提供します。また、ランタイムから送信されたデータを受け取る追跡チャネルも提供します。

Noteメモ :

追跡データの時刻値には、世界協定時刻 (グリニッジ標準時) が使用されます。

サンプルの概要

このサンプルは、1 つのワークフローと 1 つの簡単な追跡サービスを持つ、ワークフロー コンソール アプリケーションです。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 <ソリューション ファイル名>」と入力します。

サンプルを実行するには

  • SDK コマンド プロンプト ウィンドウで、ConsoleTrackingService\bin\debug フォルダ (このサンプルの VB バージョンでは ConsoleTrackingService\bin フォルダ) にある .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

その他の技術情報

追跡サンプル
簡単な追跡のサンプル
SQLTrackingService サンプルを使用するクエリ
ユーザー追跡ポイントを使用した追跡のサンプル
EventArgs 追跡サンプル
SQLTrackingService サンプルを使用するクエリ
RuleActionTrackingEvent サンプル
ファイル追跡サービスとクエリのサンプル
追跡プロファイル オブジェクト モデル サンプルの使用
SQL データ保守のサンプル
Windows Workflow Tracking Services

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.