跟踪记录

本主题适用于 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 中找到。

例如,可能存在一个简单的 Sequence 活动,该活动包含 WriteLine 操作且按以下顺序发出跟踪记录。

  1. WorkflowInstanceRecord 指示工作流正在启动。

  2. ActivityScheduledRecord 指示已安排某个活动。在本例中,该活动为 Sequence 活动。

  3. ActivityScheduledRecord 表示 WriteLine 活动。

  4. 存在两个 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