TrackingProfile 類別

定義

警告

The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*

定義根工作流程執行個體的可能執行路徑中要使用的點,而且要讓追蹤服務知道這個點。

public ref class TrackingProfile
[System.Serializable]
public class TrackingProfile
[System.Serializable]
[System.Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
public class TrackingProfile
[<System.Serializable>]
type TrackingProfile = class
[<System.Serializable>]
[<System.Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")>]
type TrackingProfile = class
Public Class TrackingProfile
繼承
TrackingProfile
屬性

範例

下列程式碼範例將示範如何使用 TrackingProfile 建構函式建立 TrackingProfile,並使用物件的屬性協助追蹤工作流程的執行。 此範例程式碼會使用 ActivityTrackPointsVersionWorkflowTrackPoints 屬性。

這個程式碼範例是 Program.cs 檔案中<使用 SQLTrackingService 查詢 SDK>範例的一部分。 如需詳細資訊,請參閱 使用 SQLTrackingService 查詢

private static void CreateAndInsertTrackingProfile()
{
    TrackingProfile profile = new TrackingProfile();
    ActivityTrackPoint activityTrack = new ActivityTrackPoint();
    ActivityTrackingLocation activityLocation = new ActivityTrackingLocation(typeof(Activity));
    activityLocation.MatchDerivedTypes = true;
    IEnumerable<ActivityExecutionStatus> statuses = Enum.GetValues(typeof(ActivityExecutionStatus)) as IEnumerable<ActivityExecutionStatus>;
    foreach (ActivityExecutionStatus status in statuses)
    {
        activityLocation.ExecutionStatusEvents.Add(status);
    }

    activityTrack.MatchingLocations.Add(activityLocation);
    profile.ActivityTrackPoints.Add(activityTrack);
    profile.Version = version;

    WorkflowTrackPoint workflowTrack = new WorkflowTrackPoint();
    WorkflowTrackingLocation workflowLocation = new WorkflowTrackingLocation();
    IEnumerable<TrackingWorkflowEvent> eventStatuses = Enum.GetValues(typeof(TrackingWorkflowEvent)) as IEnumerable<TrackingWorkflowEvent>;
    foreach (TrackingWorkflowEvent status in eventStatuses)
    {
        workflowLocation.Events.Add(status);
    }

    workflowTrack.MatchingLocation = workflowLocation;
    profile.WorkflowTrackPoints.Add(workflowTrack);

    TrackingProfileSerializer serializer = new TrackingProfileSerializer();
    StringWriter writer = new StringWriter(new StringBuilder(), CultureInfo.InvariantCulture);
    serializer.Serialize(writer, profile);
    string trackingprofile = writer.ToString();
    InsertTrackingProfile(trackingprofile);
}
Shared Sub CreateAndInsertTrackingProfile()
    Dim profile As TrackingProfile = New TrackingProfile()

    Dim activityTrack As ActivityTrackPoint = New ActivityTrackPoint()
    Dim activityLocation As ActivityTrackingLocation = New ActivityTrackingLocation(GetType(Activity))
    activityLocation.MatchDerivedTypes = True
    Dim statuses As IEnumerable(Of ActivityExecutionStatus) = CType(System.Enum.GetValues(GetType(ActivityExecutionStatus)), IEnumerable(Of ActivityExecutionStatus))
    For Each status As ActivityExecutionStatus In statuses
        activityLocation.ExecutionStatusEvents.Add(status)
    Next

    activityTrack.MatchingLocations.Add(activityLocation)
    profile.ActivityTrackPoints.Add(activityTrack)
    profile.Version = version

    Dim workflowTrack As WorkflowTrackPoint = New WorkflowTrackPoint()
    Dim workflowLocation As WorkflowTrackingLocation = New WorkflowTrackingLocation()
    Dim eventStatuses As IEnumerable(Of TrackingWorkflowEvent) = CType(System.Enum.GetValues(GetType(TrackingWorkflowEvent)), IEnumerable(Of TrackingWorkflowEvent))
    For Each status As TrackingWorkflowEvent In eventStatuses
        workflowLocation.Events.Add(status)
    Next

    workflowTrack.MatchingLocation = workflowLocation
    profile.WorkflowTrackPoints.Add(workflowTrack)

    Dim serializer As TrackingProfileSerializer = New TrackingProfileSerializer()
    Dim writer As StringWriter = New StringWriter(New StringBuilder(), CultureInfo.InvariantCulture)
    serializer.Serialize(writer, profile)
    Dim trackingProfile As String = writer.ToString()
    InsertTrackingProfile(trackingProfile)
End Sub

備註

注意

此資料討論已被汰換的類型及命名空間。 如需詳細資訊,請參閱 Windows Workflow Foundation 4.5 中即將淘汰的類型

工作流程執行個體在執行期間會發出追蹤事件到執行階段追蹤基礎結構。 執行階段追蹤基礎結構會使用 TrackingProfile 篩選這些追蹤事件,然後將根據此篩選將追蹤記錄傳回至追蹤服務。 可篩選的追蹤事件有三種:活動狀態事件、工作流程狀態事件和使用者事件。 您可以將 物件新增至 屬性,以符合特定活動狀態事件; WorkflowTrackPoint 將 物件 WorkflowTrackPoints 新增 ActivityTrackPointActivityTrackPoints 屬性,以符合特定工作流程狀態事件;將 UserTrackPoint 物件新增至 UserTrackPoints 屬性,以符合特定使用者事件。 如果有相符的追蹤點,執行階段追蹤基礎結構會將與追蹤事件關聯的資料,透過與該服務關聯的 TrackingChannel 傳回至追蹤服務。 視符合的追蹤點類型而定,會傳回 ActivityTrackingRecordWorkflowTrackingRecordUserTrackingRecord 中的資料。

追蹤服務會實作抽象 TrackingService 類別中的方法,為執行階段追蹤基礎結構提供功能,使其能夠要求與服務關聯的 TrackingChannel,以及與特定工作流程執行個體或特定工作流程類型關聯的 TrackingProfile。 追蹤服務也必須實作抽象 TrackingChannel 類別,以提供執行階段追蹤基礎結構可用來傳送追蹤記錄的通道。

當追蹤服務傳回追蹤設定檔物件至執行階段時,工作流程便開始執行,而追蹤設定檔也會序列化。 如果追蹤設定檔的序列化失敗,則會引發例外狀況至工作流程執行個體。 如果未處理例外狀況,工作流程執行個體會終止。 在將追蹤設定檔傳遞到執行階段之前,可使用 Schema 屬性加以驗證。

您可將 TrackingProfile 序列化為 XML,做法是使用 TrackingProfileSerializer,它會根據 Schema 來格式化 XML。 這提供了一種方便的格式,可用於儲存設定檔,並且以非程式設計的方法撰寫設定檔。 例如,SQL 追蹤服務會儲存其追蹤設定檔的序列化版本,任何根據 SqlTrackingService 類別所建立的追蹤服務也會這麼做。

建構函式

TrackingProfile()
已淘汰.

初始化 TrackingProfile 的新執行個體。

屬性

ActivityTrackPoints
已淘汰.

取得執行階段追蹤基礎結構用來篩選活動狀態事件的活動追蹤點集合。

UserTrackPoints
已淘汰.

取得執行階段追蹤基礎結構用來篩選使用者事件的使用者追蹤點集合。

Version
已淘汰.

取得或設定追蹤設定檔的版本。

WorkflowTrackPoints
已淘汰.

取得執行階段追蹤基礎結構用來篩選工作流程狀態事件的工作流程追蹤點集合。

方法

Equals(Object)
已淘汰.

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()
已淘汰.

做為預設雜湊函式。

(繼承來源 Object)
GetType()
已淘汰.

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()
已淘汰.

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()
已淘汰.

傳回代表目前物件的字串。

(繼承來源 Object)

適用於

另請參閱