共用方式為


追蹤記錄

本主題僅適用於 Windows Workflow Foundation 4。

工作流程執行階段經檢測會發出追蹤記錄,以追蹤工作流程執行個體的執行。

追蹤記錄

下表詳細說明工作流程執行階段發出的追蹤記錄。

追蹤記錄 說明

工作流程開發週期記錄

在工作流程執行個體開發週期的不同階段發出。例如,當工作流程啟動或完成時,就會發出記錄。

活動開發週期記錄

活動執行詳細資訊。這些記錄會指出工作流程活動的狀態,例如活動排程時間、活動完成時間,或是發生錯誤的時間。

書籤繼續記錄

只要工作流程執行個體中的書籤繼續,就會發出。

自訂追蹤記錄

工作流程作者可建立自訂追蹤事件記錄,並在自訂活動中發出這些記錄。

所有與追蹤相關的記錄均會從衍生自基底類別 TrackingRecord (包含通用資料集) 的 WF 執行階段發出。追蹤記錄會顯示簡單工作流程的開發週期。每個追蹤記錄均包含相關聯之追蹤事件的詳細資訊,例如 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. 有兩個 ActivityStateRecord 記錄,代表兩個即將完成的活動。

  5. WorkflowInstanceRecord 表示工作流程正在完成。

發出自訂追蹤記錄

程式碼活動可以發出自訂的追蹤記錄,如下列範例所示。

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

在程式碼活動中發出 CustomTrackingRecord,方法是在 ActvityContext 叫用 Track 方法。