次の方法で共有


追跡レコード

このトピックの内容は、Windows Workflow Foundation 4 に該当します。

ワークフロー ランタイムは、ワークフロー インスタンスの実行状況を追跡する追跡レコードを出力するためにインストルメント化されています。

追跡レコード

次の表で、ワークフロー ランタイムが出力する追跡レコードの詳細を説明します。

追跡レコード 説明

ワークフロー ライフサイクル レコード

ワークフロー インスタンスのライフ サイクルの多様なステージ中に出力されます。たとえば、ワークフローの開始時または完了時にレコードは出力されます。

アクティビティ ライフサイクル レコード

アクティビティの実行状況を詳しく記録します。これらのレコードは、アクティビティをスケジュールしたとき、アクティビティが完了したとき、エラーが発生したときなど、ワークフロー アクティビティの状態を示します。

ブックマーク再開レコード

ワークフロー インスタンス内のブックマークが再開されたときに出力されます。

カスタム追跡レコード

ワークフロー作成者はカスタム追跡レコードを作成し、カスタム アクティビティ内で出力できます。

WF ランタイムから出力されるすべての追跡関連レコードは、基本クラス TrackingRecord から派生します。この基本クラスには一般的なデータのセットが含まれます。追跡レコードは、単純なワークフローのライフサイクルを示します。各追跡レコードには、InstanceIdRecordNumber などの関連する追跡イベント、および追跡レコードの型に固有の追加情報の詳細が含まれます。

次の TrackingRecord オブジェクトの型は、ワークフロー ランタイムによって出力されます。

  • WorkflowInstanceRecord - この TrackingRecord は、ワークフロー インスタンスのライフサイクルを示します。たとえば、ワークフローの開始時または完了時にレコードが出力されます。また、レコードにはワークフロー インスタンスの状態が含まれます。このレコードの詳細については、「WorkflowInstanceRecord」を参照してください。

  • WorkflowInstanceAbortedRecord - この TrackingRecord は、ワークフロー インスタンスの中止時に出力されます。レコードにはワークフロー インスタンスが中止された理由が含まれます。このレコードの詳細については、「WorkflowInstanceAbortedRecord」を参照してください。

  • WorkflowInstanceUnhandledExceptionRecord - この TrackingRecord は、例外がワークフロー インスタンスで発生し、任意のアクティビティによって処理されない場合に出力されます。レコードには例外の詳細が含まれます。このレコードの詳細については、「WorkflowInstanceUnhandledExceptionRecord」を参照してください。

  • WorkflowInstanceSuspendedRecord - この TrackingRecord は、ワークフロー インスタンスが一時停止されたときに出力されます。レコードにはワークフロー インスタンスが一時停止された理由が含まれます。このレコードの詳細については、「WorkflowInstanceSuspendedRecord」を参照してください。

  • WorkflowInstanceTerminatedRecord - この TrackingRecord は、ワークフロー インスタンスが終了したときに出力されます。レコードにはワークフロー インスタンスが終了した理由が含まれます。このレコードの詳細については、「WorkflowInstanceTerminatedRecord」を参照してください。

  • ActivityStateRecord - この TrackingRecord は、ワークフロー内のアクティビティが実行されたときに出力されます。これらのレコードは、ワークフロー インスタンス内のアクティビティの状態を示します。このレコードの詳細については、「ActivityStateRecord」を参照してください。

  • ActivityScheduledRecord - この TrackingRecord は、アクティビティが子のアクティビティをスケジュールするときに出力されます。このレコードには、親のアクティビティ (スケジューリング アクティビティ) およびスケジュール設定された子のアクティビティの両方の詳細が含まれます。このレコードの詳細については、「ActivityScheduledRecord」を参照してください。

  • FaultPropagationRecord - この TrackingRecord は、レコードが処理されるまで、レコードを確認するハンドラーごとに出力されます。これは、エラーがワークフロー インスタンス内でたどるパスを示すために使用されます。このレコードの詳細については、「FaultPropagationRecord」を参照してください。

  • CancelRequestedRecord - この TrackingRecord は、アクティビティが子のアクティビティを取り消そうとするときに出力されます。このレコードには、親のアクティビティおよび取り消される子のアクティビティの両方の詳細が含まれます。このレコードの詳細については、「CancelRequestedRecord」を参照してください。

  • BookmarkResumptionRecord - この TrackingRecord は、正常に再開されるすべてのブックマークを追跡します。このレコードの詳細については、「BookmarkResumptionRecord」を参照してください。

  • CustomTrackingRecord - この TrackingRecord は、カスタム ワークフロー アクティビティ内のワークフロー作成者によって作成および出力されます。カスタム追跡レコードには、レコードと一緒に出力されるデータを読み込むことができます。このレコードの詳細については、「CustomTrackingRecord」を参照してください。

たとえば、WriteLine 操作と次の順序で出力された追跡レコードを含む単純な Sequence アクティビティもあります。

  1. WorkflowInstanceRecord は、ワークフローが起動していることを示します。

  2. ActivityScheduledRecord は、アクティビティがスケジュールされたことを示します。この場合は Sequence アクティビティです。

  3. ActivityScheduledRecord は、WriteLine アクティビティを表します。

  4. 2 つのアクティビティが完了していることを示す 2 つの ActivityStateRecord レコードがあります。

  5. WorkflowInstanceRecord は、ワークフローが完了していることを示します。

カスタム追跡レコードの出力

次の例に示すように、カスタム追跡レコードはコード アクティビティから出力できます。

protected override void Execute(CodeActivityContext context)
{
…
            CustomTrackingRecord customRecord = new CustomTrackingRecord("CustomEmailSentEvent");
            customRecord.Data.Add("SendTime", sendTime);
            context.Track(customRecord);
}

ActvityContext 上で Track メソッドを呼び出すことで、CustomTrackingRecord をコード アクティビティに出力できます。