跟踪记录
本主题适用于 Windows Workflow Foundation 4。
检测工作流运行时的目的是为了发出跟踪记录,以便跟踪工作流实例的执行。
跟踪记录
下表详细介绍工作流运行时发出的跟踪记录。
跟踪记录 | 说明 |
---|---|
工作流生命周期记录 |
在工作流实例生命周期的各个阶段中发出。例如,当工作流启动或完成时发出一个记录。 |
活动生命周期记录 |
详细说明活动执行情况。这些记录指示工作流活动的状态,例如,当安排活动时、活动完成时,或者发生错误时。 |
书签恢复记录 |
当恢复工作流实例中的书签时发出。 |
自定义跟踪记录 |
工作流作者可以在自定义活动中创建并发出自定义跟踪记录。 |
WF 运行时发出的所有跟踪相关记录都派生自基类 TrackingRecord,该类包含一组常用的数据。跟踪记录显示简单工作流的生命周期。每条跟踪记录都包含有关关联跟踪事件的详细信息,例如,InstanceId、RecordNumber 以及特定于跟踪记录类型的其他信息。
工作流运行时发出下列 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 操作且按以下顺序发出跟踪记录。
WorkflowInstanceRecord 指示工作流正在启动。
ActivityScheduledRecord 指示已安排某个活动。在本例中,该活动为 Sequence 活动。
ActivityScheduledRecord 表示 WriteLine 活动。
存在两个 ActivityStateRecord 记录,表示正在完成两个活动。
WorkflowInstanceRecord 指示正在完成工作流。
发出自定义跟踪记录
可以从代码活动中发出自定义跟踪记录,如下面的示例所示。
protected override void Execute(CodeActivityContext context)
{
…
CustomTrackingRecord customRecord = new CustomTrackingRecord("CustomEmailSentEvent");
customRecord.Data.Add("SendTime", sendTime);
context.Track(customRecord);
}
通过对 ActvityContext
调用 Track 方法,在代码活动中发出 CustomTrackingRecord。