追蹤記錄
本主題僅適用於 Windows Workflow Foundation 4。
工作流程執行階段經檢測會發出追蹤記錄,以追蹤工作流程執行個體的執行。
追蹤記錄
下表詳細說明工作流程執行階段發出的追蹤記錄。
追蹤記錄 | 說明 |
---|---|
工作流程開發週期記錄 |
在工作流程執行個體開發週期的不同階段發出。例如,當工作流程啟動或完成時,就會發出記錄。 |
活動開發週期記錄 |
活動執行詳細資訊。這些記錄會指出工作流程活動的狀態,例如活動排程時間、活動完成時間,或是發生錯誤的時間。 |
書籤繼續記錄 |
只要工作流程執行個體中的書籤繼續,就會發出。 |
自訂追蹤記錄 |
工作流程作者可建立自訂追蹤事件記錄,並在自訂活動中發出這些記錄。 |
所有與追蹤相關的記錄均會從衍生自基底類別 TrackingRecord (包含通用資料集) 的 WF 執行階段發出。追蹤記錄會顯示簡單工作流程的開發週期。每個追蹤記錄均包含相關聯之追蹤事件的詳細資訊,例如 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 中找到。
例如,若有包含 WriteLine 作業的簡單 Sequence 活動,其追蹤記錄是按下列順序發出的。
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);
}
在程式碼活動中發出 CustomTrackingRecord,方法是在 ActvityContext
叫用 Track 方法。