首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WF 核心教學第五章:工作流追蹤服務完整指南——SQL 追蹤、自訂事件與監視工具

     編輯:關於.NET

第五章聚焦 WF 可選服務中的 追蹤。介紹服務架構、SqlTrackingService 部署、資料庫腳本、自訂追蹤事件、追蹤設定檔過濾、TrackingProfileSerializer 持久化設定檔,以及 WorkflowMonitor 圖形化監視工具使用。

可插拔服務架構

WF 核心服務皆為抽象基類(TrackingService、WorkflowPersistenceService 等),實際使用衍生實作(SqlTrackingService、DefaultWorkflowSchedulerService)。開發者按需「像點菜一樣」加入服務。

基礎服務功能
TrackingService追蹤基礎介面
WorkflowPersistenceService持久化基礎
WorkflowRuntimeService運行時核心服務
WorkflowSchedulerService執行緒排程
WorkflowQueuingService佇列管理
WorkflowSubscriptionService訂閱/計時器
WorkflowTransactionService交易服務

追蹤核心物件分類

追蹤物件分兩大類:

  • 資料檢索類:SqlTrackingQuery、SqlTrackingWorkflowInstance 等,從資料庫查詢追蹤記錄。
  • 詳細描述類:追蹤點(TrackPoint)、位置(TrackingLocation),定義「追蹤什麼、在哪裡追蹤」。

詳細描述類再分三組:活動事件(ActivityTrackingPoint/Location)、工作流事件(WorkflowTrackingPoint/Location)、使用者事件(UserTrackingPoint/Location)。

建立 SQL 追蹤資料庫

  1. SSMS 建立資料庫 WorkflowTracking。
  2. 執行 Tracking_Schema.sql 建立資料表/角色。
  3. 執行 Tracking_Logic.sql 建立預存程序。

SSMS 建立資料庫

啟用 SqlTrackingService 並建立測試工作流

  1. 建立順序工作流專案 TrackedWorkflow,加入 IfElse 分支:左分支含 Code→Delay(10秒)→Code,右分支無動作。
  2. IfElse 條件 QueryDelay 彈出詢問是否執行延遲。
  3. 主程式 app.config 設定連線字串,WorkflowFactory 註冊 SqlTrackingService。

IfElse 設計器 設定代碼條件 左分支加入 Code 設定 ExecuteCode 完整工作流設計 加入 app.config ActivityInstance 表記錄

從資料庫檢索追蹤記錄

主程式 Program.cs 使用 SqlTrackingQuery.TryGetWorkflow 取得 SqlTrackingWorkflowInstance,遍歷 ActivityEvents(活動狀態/時間/完整名稱)與 WorkflowEvents(工作流事件/時間)輸出至主控台。

主控台追蹤輸出

追蹤使用者自訂事件:TrackData 方法

活動基類提供 TrackData(object) 或 TrackData(string, object)。在 PreDelayMessage、PostDelayMessage 中呼叫 this.TrackData("Delay commencing/completed"),資料寫入 UserEvent 表。

UserEvent 表記錄

建立自訂追蹤設定檔:過濾追蹤資料量

預設追蹤所有事件,產生大量資料。TrackingProfile 定義「關注點」,僅記錄指定事件。以代碼建構 TrackingProfile:

  • 活動層級:ActivityTrackingLocation 指定型別 Activity、MatchDerivedTypes=true、關注 Executing 狀態。
  • 工作流層級:WorkflowTrackingLocation 關注 Started、Idle 事件。
  • 設定版本號(如 1.0.0.0),透過 TrackingProfileSerializer 序列化為 XML,使用 ADO.NET 呼叫預存程序 dbo.UpdateTrackingProfile 寫入資料庫。

套用設定檔後,輸出僅含指定事件,大幅減少資料量。

套用設定檔後輸出 WorkflowMonitor 設定對話框 WorkflowMonitor 主介面

WorkflowMonitor 圖形化監視工具

  1. 從 Windows SDK Samples WFSamples.zip 解壓 WorkflowMonitor.sln 並編譯。
  2. 將 WorkflowMonitor.exe 複製至工作流輸出目錄(bin\Debug),確保工作流組件可被載入。
  3. 執行設定資料庫連線,即可視覺化瀏覽工作流執行軌跡、活動狀態、追蹤資料。
實務建議:生產環境務必套用追蹤設定檔,避免資料庫膨脹。WorkflowMonitor 適合開發/測試階段診斷;正式環境可自行開發儀表板查詢 SqlTrackingQuery。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved