共用方式為


Windows 工作流程追蹤服務

Windows Workflow Foundation 讓您可以使用一致、可靠和彈性的方法追蹤工作流程相關資訊。 Windows Workflow Foundation 追蹤架構是為了使主機在執行期間能觀察工作流程執行個體而設計,透過擷取在執行工作流程期間引發的事件來達成。 架構是可插入的設計,使主機可以寫入自己的追蹤服務,或是使用全新或第三方的追蹤服務。 此外,由於 Windows Workflow Foundation 執行階段可讓您在其存留期間新增數個執行階段服務,因此可同時啟用多個不同類型的追蹤服務。 例如,Windows Workflow Foundation 包含全新的 SqlTrackingService 服務,可將配置的追蹤資訊量寫入 SQL Server 資料庫中。 Windows Workflow Foundation 範例也包括一個範例 ConsoleTrackingService Sample,此範例可接聽事件並將那些事件輸出至主控台。 系統可以一起執行這些服務,以便將工作流程執行與開發期間的偵錯資訊兩者的使用者可視性加以啟用。

Windows Workflow Foundation 中的追蹤功能

Windows Workflow Foundation 包含多種內建功能,可在啟用工作流程的應用程式中進行追蹤。

功能 描述

確定以一致的方法追蹤。

使用者和應用程式可以追蹤實況工作流程和已封存至磁碟之工作流程的工作流程狀態和歷史記錄。 追蹤服務的一致架構可確保自訂追蹤服務遵循邏輯而連貫的模式。

提供延展性和可靠性。

追蹤架構可以部署在單一電腦上,但同時也可加以調整以符合大部份企業的需求,例如需要叢集和分散式資料中心環境的企業。

無論基本資料存放區為何,都要追蹤工作流程資料。

追蹤架構與管理追蹤事件的資料存放區無關。 使用者可以使用追蹤事件之妥善定義的配置;然而,資料存放區最終還是會控制基礎的保存資料之配置。

提供一個位置來查詢跨裝載環境的工作流程相關資料。

Windows Workflow Foundation 可以在多種環境內裝載;應用程式需要可以查詢工作流程資訊的一致介面。

提供查詢過去和現在工作流程生命週期的能力,以及判斷工作流程執行個體未來可能的執行路徑。

針對發出的工作流程定義以及與工作流程相關的中繼資料,追蹤架構可提供方法以啟用指引型查詢。 它也提供發出資料狀態變更的方法,如此可以追蹤使用者定義的狀態。

提供對追蹤設定檔的程式設計變更的支援。

您可以使用追蹤設定檔物件模型來建立追蹤設定檔。 這可以讓您在執行作用中工作流程時,視需要載入自訂的設定檔。

追蹤設定檔

追蹤服務會使用追蹤設定檔來判斷接收到的資料量以篩選該資料。 追蹤服務可以接收工作流程事件、活動執行狀態和自訂使用者追蹤資料項目。 追蹤服務負責在執行工作流程執行個體時,追蹤自執行階段引擎接收的資料。 它可以將資料儲存在檔案或資料庫中、建立記憶體內查詢存放區、寫入資料至系統事件記錄中,或僅輸出追蹤資料至主控台。

您可以使用 Tracking Profile XML 配置以宣告的方式來撰寫追蹤設定檔,或使用追蹤設定檔物件模型以程式設計的方式來撰寫設定檔。 此外,使用 TrackingProfileSerializer API 可以將 XML 式追蹤設定檔還原序列化為 TrackingProfile 執行個體。

如需追蹤設定檔的詳細資訊,請參閱建立和使用追蹤設定檔

追蹤事件類型

在 Windows Workflow Foundation 中使用追蹤時,您可以追蹤在工作流程執行期間引發的單一事件或事件群組。 在 ActivityExecutionStatus 列舉中定義為了活動而追蹤的事件:

  • 已初始化

  • 正在執行

  • 正在取消

  • 已關閉

  • 正在補償

  • 失敗

除了活動的追蹤事件外,追蹤基礎結構也可以讓您追蹤在工作流程執行個體層級發生的事件。 可追蹤的執行個體層級事件定義在 TrackingWorkflowEvent 列舉中:

  • Created

  • 已完成

  • 閒置

  • 已暫停

  • 已繼續

  • 已保存

  • 已卸載

  • 已載入

  • 例外狀況

  • 已終止

  • 已中止

  • 已變更

  • 已啟動

如需追蹤個別事件的資訊,請參閱建立和使用追蹤設定檔

明確程式碼層級追蹤

建置工作流程和工作的開發人員可能想要以明確的追蹤事件檢測他們的程式碼。 這應該只有在無法使用追蹤設定檔來檢測所需追蹤事件的執行階段時才能達成。

工作流程撰寫者可以使用 ActivityExecutionContext 上的其中一個 TrackData 多載方法來追蹤任何種類的資訊。 使用者追蹤點的數目沒有限制,可以從追蹤方法傳送的資料種類也沒有限制。 在 SqlTrackingService 實作中,如果傳遞至 TrackData 方法的第二個參數中的物件不是二進位可序列化物件,則儲存的資料即為呼叫該物件的 ToString 方法的結果。

例如,下列類別是可以用於在活動執行期間追蹤偵錯訊息的自訂物件。 此類別包含 Message 屬性和 MessageType 屬性 (表示所要追蹤的訊息屬於資訊、警告、錯誤或用於偵錯的訊息),因此不會顯示給使用者看。 此外,靜態 Helper 方法可以用於傳回新建構的 UserEventData 物件,該物件會在呼叫 TrackData 方法期間加以使用。

[C#]

using System;
using System.Collections.Generic;
using System.Text;

namespace Microsoft.Samples.Workflow.TrackData
{
    [Serializable]
    public class UserEventData
    {
        private UserEventType type = 0;
        private string message = "";

        public enum UserEventType
        {
            Info = 0,
            Warning = 1,
            Error = 2,
            Debug = 4
        };

        public UserEventType MessageType
        {
            get { return type; }
            set { type = value; }
        }

        public string Message
        {
            get { return message; }
            set { message = value; }
        }

        public static UserEventData NewMessage(UserEventType type, string message)
        {
            UserEventData ret = new UserEventData();
            ret.MessageType = type;
            ret.Message = message;
            return ret;
        }
    }
}

在範例中定義的 UserEventData 類別可當做您撰寫自訂活動時的自訂追蹤物件使用。 若要追蹤 UserEventData 物件,請呼叫 TrackData 方法,傳遞新 UserEventData 物件做為要追蹤的物件。 下列程式碼說明如何藉由覆寫 Execute 方法以在自訂活動中執行此操作:

[C#]

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
    this.TrackData(UserEventData.NewMessage(UserEventData.UserEventType.Debug, "Activity executing"));
}

如需追蹤自訂資料的詳細資訊,請參閱Tracking Using User Track Points Sample

追蹤僅標記工作流程

透過工作流程僅標示工作流程和 Windows Workflow Foundation 追蹤功能,您可以在啟動執行個體之前,使用泛型追蹤設定檔或使用每個工作流程執行個體上的 ReloadTrackingProfiles (如果您想要追蹤來自這個執行個體的特定事件/項目)。 如果您決定使用 ReloadTrackingProfiles,則必須建立 XML BLOB 的工作流程執行個體、取得執行個體 GUID、為該執行個體建置特定的追蹤設定檔,然後要求執行個體重新載入其設定檔。 當呼叫具有執行個體識別碼的 GetProfile 時,追蹤服務應該會將此設定檔傳回工作流程執行階段引擎。 這是執行個體和設定檔之間相互關聯的地方。

追蹤規則

RuleSet 執行時,透過將 UserTrackPoint 新增至其追蹤設定檔,會將追蹤事件傳送到追蹤服務,這些服務已在註冊這些事件的主機上設定。 傳送 RuleActionTrackingEvent,它會提供已評估之規則的名稱,以及條件評估結果 (true/false)。 如需詳細資訊,請參閱 RuleActionTrackingEvent Sample

活動上的規則條件評估結果可由追蹤活動執行隱含追蹤。

自訂追蹤服務

Windows Workflow Foundation 包含 SqlTrackingService 服務,您可以使用這個服務追蹤儲存在 SQL Server 資料庫中的資料。 然而,由於擴充性模型是由 Windows Workflow Foundation 使用,您可以建立使用不同儲存媒體 (例如本機檔案) 的自訂追蹤服務,因為執行階段引擎與資料的最終目的地或傳送格式無關。 如需如何建立自訂追蹤服務的詳細資訊,請參閱建立自訂追蹤服務

本章節內容

建立和使用追蹤設定檔

使用 SqlTrackingService

使用 SqlTrackingQuery 查詢 SqlTrackingService 資料

使用 SqlTrackingService 進行資料維護

請參閱

參考

System.Workflow.Runtime.Tracking
TrackData
TrackingWorkflowEvent
ActivityExecutionStatus

概念

建立自訂追蹤服務

其他資源

Windows Workflow Foundation 服務
練習 4:使用執行階段服務
Tracking Samples
Simple Tracking Example
Tracking Using User Track Points Sample

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.