TrackingService.GetProfile Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Must be overridden in the derived class, and when implemented, gets the tracking profile for a specified workflow instance or workflow type.
Overloads
GetProfile(Guid) |
Must be overridden in the derived class, and when implemented, returns the tracking profile for the specified workflow instance. |
GetProfile(Type, Version) |
Must be overridden in the derived class, and when implemented, returns the tracking profile, qualified by version, for the specified workflow Type. |
Remarks
A tracking service is responsible for managing the tracking profiles available for specific workflow types and specific workflow instances. You can implement this management in whatever manner you choose. For example, you can return the same TrackingProfile for every workflow Type and workflow instance; or you can manage a sophisticated store of tracking profiles referenced by workflow instance, workflow Type, and Version.
GetProfile(Guid)
Must be overridden in the derived class, and when implemented, returns the tracking profile for the specified workflow instance.
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
Parameters
Returns
The tracking profile for the specified workflow instance.
Examples
The following example shows an implementation of the GetProfile
method. In this example, several overloads of the GetProfile
method call a single private GetProfile
method, which returns a hard-coded, default tracking profile. This example is from the Termination Tracking Service SDK sample. For more information, see Termination Tracking Service Sample.
/// <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
Remarks
A tracking service is responsible for managing the tracking profiles available for specific workflow types and specific workflow instances. You can implement this management in whatever manner you choose. For example, you can return the same TrackingProfile for every workflow Type and workflow instance; or you can manage a sophisticated store of tracking profiles referenced by workflow instance, workflow Type, and Version.
Applies to
GetProfile(Type, Version)
Must be overridden in the derived class, and when implemented, returns the tracking profile, qualified by version, for the specified workflow 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
Parameters
Returns
The tracking profile for the specified workflow type.
Remarks
A tracking service is responsible for managing the tracking profiles available for specific workflow types and specific workflow instances. You can implement this management in whatever manner you choose. For example, you can return the same TrackingProfile for every workflow Type and workflow instance; or you can manage a sophisticated store of tracking profiles referenced by workflow instance, workflow Type, and Version.