TrackingService.GetProfile 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
必須在衍生類別中覆寫,在實作之後會取得指定之工作流程執行個體或工作流程類型的追蹤設定檔。
多載
GetProfile(Guid) |
必須在衍生類別中覆寫,在實作之後會傳回指定之工作流程執行個體的追蹤設定檔。 |
GetProfile(Type, Version) |
必須在衍生類別中覆寫,在實作之後會傳回指定之工作流程 Type、特定版本的追蹤設定檔。 |
備註
追蹤服務負責管理用於特定工作流程類型和特定工作流程執行個體的追蹤設定檔。 您可使用您選擇的任何方式來實作這項管理。 例如,您可以針對每個工作流程 TrackingProfile 和工作流程執行個體傳回相同的 Type,或者您也可以管理由工作流程執行個體、工作流程 Type 和 Version 所參考之追蹤設定檔的複雜存放區。
GetProfile(Guid)
必須在衍生類別中覆寫,在實作之後會傳回指定之工作流程執行個體的追蹤設定檔。
protected public:
abstract System::Workflow::Runtime::Tracking::TrackingProfile ^ GetProfile(Guid workflowInstanceId);
protected internal abstract System.Workflow.Runtime.Tracking.TrackingProfile GetProfile (Guid workflowInstanceId);
abstract member GetProfile : Guid -> System.Workflow.Runtime.Tracking.TrackingProfile
Protected Friend MustOverride Function GetProfile (workflowInstanceId As Guid) As TrackingProfile
參數
傳回
指定之工作流程執行個體的追蹤設定檔。
範例
下列範例會示範 GetProfile
方法的實作。 在這個範例中,數個 GetProfile
方法的多載會呼叫單一私用 GetProfile
方法,這個方法則會傳回硬式編碼的預設追蹤設定檔。 這個範例來自<暫止追蹤服務 SDK>範例。 如需詳細資訊,請參閱 終止追蹤服務範例。
/// <summary>
/// Returns a static tracking profile that only tracks instance terminated events.
/// </summary>
protected override TrackingProfile GetProfile(Guid workflowInstanceId)
{
return GetProfile();
}
private volatile static TrackingProfile profile = null;
private bool sourceExists = false;
private TrackingProfile GetProfile()
{
//
// We shouldn't hit this point without the host ignoring an earlier exception.
// However if we're here and the source doesn't exist we can't function.
// Throwing an exception from here will block instance creation
// but that is better than failing silently on termination
// and having the admin think everything is OK because the event log is clear.
if (!sourceExists)
throw new InvalidOperationException(string.Format(System.Globalization.CultureInfo.InvariantCulture, "EventLog Source with the name '{0}' does not exist", source));
//
// The profile for this instance will never change
if (null == profile)
{
lock (typeof(TerminationTrackingService))
{
if (null == profile)
{
profile = new TrackingProfile();
profile.Version = new Version("3.0.0.0");
WorkflowTrackPoint point = new WorkflowTrackPoint();
point.MatchingLocation = new WorkflowTrackingLocation();
point.MatchingLocation.Events.Add(TrackingWorkflowEvent.Terminated);
profile.WorkflowTrackPoints.Add(point);
}
}
}
return profile;
}
'/ <summary>
'/ Returns a Shared tracking profile that only tracks instance terminated events.
'/ </summary>
Protected Overrides Function GetProfile(ByVal workflowInstanceId As Guid) As TrackingProfile
Return GetProfile()
End Function
Private Shared profile As TrackingProfile = Nothing
Private sourceExists As Boolean = False
Private Overloads Function GetProfile() As TrackingProfile
'
' We shouldn't hit me point without the host ignoring an earlier exception.
' However if we're here and the source doesn't exist we can't function.
' Throwing an exception from here will block instance creation
' but that is better than failing silently on termination
' and having the admin think everything is OK because the event log is clear.
If Not sourceExists Then
Throw New InvalidOperationException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "EventLog Source with the name '0}' does not exist", source))
End If
'
' The profile for me instance will never change
If profile Is Nothing Then
SyncLock (GetType(TerminationTrackingService))
If profile Is Nothing Then
profile = New TrackingProfile()
profile.Version = New Version("3.0.0.0")
Dim point As New WorkflowTrackPoint()
point.MatchingLocation = New WorkflowTrackingLocation()
point.MatchingLocation.Events.Add(TrackingWorkflowEvent.Terminated)
profile.WorkflowTrackPoints.Add(point)
End If
End SyncLock
End If
Return profile
End Function
備註
追蹤服務負責管理用於特定工作流程類型和特定工作流程執行個體的追蹤設定檔。 您可使用您選擇的任何方式來實作這項管理。 例如,您可以針對每個工作流程 TrackingProfile 和工作流程執行個體傳回相同的 Type,或者您也可以管理由工作流程執行個體、工作流程 Type 和 Version 所參考之追蹤設定檔的複雜存放區。
適用於
GetProfile(Type, Version)
必須在衍生類別中覆寫,在實作之後會傳回指定之工作流程 Type、特定版本的追蹤設定檔。
protected public:
abstract System::Workflow::Runtime::Tracking::TrackingProfile ^ GetProfile(Type ^ workflowType, Version ^ profileVersionId);
protected internal abstract System.Workflow.Runtime.Tracking.TrackingProfile GetProfile (Type workflowType, Version profileVersionId);
abstract member GetProfile : Type * Version -> System.Workflow.Runtime.Tracking.TrackingProfile
Protected Friend MustOverride Function GetProfile (workflowType As Type, profileVersionId As Version) As TrackingProfile
參數
傳回
指定之工作流程型別的追蹤設定檔。
備註
追蹤服務負責管理用於特定工作流程類型和特定工作流程執行個體的追蹤設定檔。 您可使用您選擇的任何方式來實作這項管理。 例如,您可以針對每個工作流程 TrackingProfile 和工作流程執行個體傳回相同的 Type,或者您也可以管理由工作流程執行個體、工作流程 Type 和 Version 所參考之追蹤設定檔的複雜存放區。