TrackingService.GetProfile Метод

Определение

Должен переопределяться в производном классе и при реализации должен получать профиль отслеживания для указанного экземпляра или типа рабочего процесса.

Перегрузки

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

Параметры

workflowInstanceId
Guid

Тип Guid экземпляра рабочего процесса.

Возвращаемое значение

Профиль отслеживания для указанного экземпляра рабочего процесса.

Примеры

В следующем примере показана реализация метода GetProfile. В данном примере несколько перегрузок метода GetProfile вызывают один частный метод GetProfile, который возвращает жестко заданный профиль отслеживания по умолчанию. Данный пример является частью примера SDK "Termination Tracking Service". Дополнительные сведения см. в разделе Пример службы отслеживания завершения.

/// <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

Параметры

workflowType
Type

Тип Type рабочего процесса.

profileVersionId
Version

Класс Version профиля отслеживания.

Возвращаемое значение

Профиль отслеживания для указанного типа рабочего процесса.

Комментарии

Служба отслеживания отвечает за управление доступными профилями отслеживания, предназначенными для конкретных типов и экземпляров рабочих процессов. Такое управление можно реализовать любым удобным для разработчика способом. Например, можно вернуть один и тот же класс TrackingProfile для каждого типа Type рабочего процесса и экземпляра рабочего процесса; либо можно управлять сложным хранилищем профилей отслеживания, на которые ссылаются экземпляр рабочего процесса, Type рабочего процесса и класс Version.

Применяется к