ConsoleTrackingService 範例
這個範例會示範如何建立追蹤服務,以及將所追蹤資料的內容寫入主控台中。
Windows Workflow Foundation 提供追蹤基礎結構,讓應用程式能夠追蹤工作流程狀態變更與資料。此外,它還提供彈性的設計,讓您可以因應商務需求來建立最適當的追蹤服務,以及在工作流程執行階段中使用這些追蹤服務。
若要撰寫追蹤服務,您必須實作追蹤通道和追蹤服務。追蹤通道會接收由執行階段傳送的追蹤記錄。追蹤服務則會根據特定的參數與條件,將追蹤設定檔提供給執行階段。它也會負責提供追蹤通道,而該通道會接收由執行階段傳送的資料。
注意: |
---|
追蹤資料中的時間值會以 Coordinated Universal Time (格林威治時間) 表示。 |
範例概觀
此範例是含有一個工作流程和簡單追蹤服務的工作流程主控台應用程式。SampleWorkflow 是具有程式碼處理常式的工作流程,在此工作流程中會發出 UserTrackPoint。
完整的追蹤服務會實作於 ConsoleTrackingService.cs 中,而且會包含下列 TrackingChannelSample 和 ConsoleTrackingService 實作:
TrackingChannelSample 會實作 Send 方法,如下所示:
public override void Send(TrackingRecord record) { // Filter on record type. if (record is WorkflowTrackingRecord) { WriteWorkflowTrackingRecord((WorkflowTrackingRecord)record); } if (record is ActivityTrackingRecord) { WriteActivityTrackingRecord((ActivityTrackingRecord)record); } if (record is UserTrackingRecord) { WriteUserTrackingRecord((UserTrackingRecord)record); } }
此外,TrackingChannelSample 會將訊息寫入主控台來實作 InstanceCompletedOrTerminated 方法。追蹤執行階段會呼叫 InstanceCompletedOrTerminated 方法來表示該工作流程執行個體已完成執行,而不管與該執行個體相關聯的追蹤設定檔為何。
ConsoleTrackingService 會實作下列方法:
public override TrackingChannel GetTrackingChannel(TrackingParameters parameters) { //Return a tracking channel to receive runtime events. return new TrackingChannelSample(parameters); }
若要建置範例
按一下 [下載範例] 來下載範例。
這樣便會將範例專案擷取到本機硬碟上。
按一下 [開始],並依序指向 [程式集] 和 [Microsoft Windows SDK],再按一下 [CMD 殼層]。
移至範例的來源目錄。
在命令提示字元上,輸入 MSBUILD <Solution file name>。
執行範例
- 在 [SDK 命令提示字元] 視窗中,執行 ConsoleTrackingService\bin\debug 資料夾 (若是範例的 VB 版本,則是 ConsoleTrackingService\bin 資料夾) 中的 .exe 檔案,該資料夾位於此範例的主要資料夾下方。
進階主題
本範例並未實作下列主題。但是這些主題可以指示您探索更進階的工作流程主題。
執行階段和追蹤服務通訊
對追蹤服務的執行階段呼叫屬於同步性質。工作流程執行會一直進行封鎖,直到您從追蹤服務方法傳回結果。
設定檔更新
Windows Workflow Foundation 提供的彈性功能,可以讓您從 IProfileNotification 衍生和實作事件處理常式來向追蹤執行階段通知設定檔的更新或移除,如下所示:
public class ConsoleTrackingService : TrackingService, IProfileNotification
public event EventHandler<ProfileUpdatedEventArgs> ProfileUpdated;
public event EventHandler<ProfileRemovedEventArgs> ProfileRemoved;
重新載入設定檔
若要重新載入特定工作流程執行個體的設定檔,您可以在該執行個體上呼叫 ReloadTrackingProfiles,如下所示:
WorkflowInstance wi = wr.StartWorkflow(typeof(SampleWorkflow));
wi.ReloadTrackingProfiles();
這會使得執行階段在已註冊的 TrackingService 上面呼叫 TryReloadProfile 方法,以取得該執行個體的新設定檔。
GetProfile 多載
工作流程執行階段會呼叫下列方法來要求特定 workflowInstanceId 的設定檔。如果您支援重新載入執行個體特定的設定檔,請實作這個方法。
GetProfile(Guid workflowInstanceId)
工作流程執行階段會呼叫下列方法來要求版本特定的設定檔。如果您支援重新載入版本特定的設定檔,請實作這個方法。
GetProfile(Type workflowType, Version profileVersionId)
請參閱
參考
ActivityTrackingRecord
WorkflowTrackingRecord
IProfileNotification
其他資源
追蹤範例
簡單追蹤範例
使用 SQLTrackingService 查詢範例
使用使用者追蹤點追蹤範例
EventArgs 追蹤範例
使用 SQLTrackingService 查詢範例
RuleActionTrackingEvent 範例
檔案追蹤服務與查詢範例
使用追蹤設定檔物件模型範例
SQL 資料維護範例
Windows Workflow Tracking Services
Copyright © 2007 by Microsoft Corporation. All rights reserved.