TrackingService.GetProfile Metodo

Definizione

Deve essere sottoposto a override nella classe derivata e, in caso di implementazione, ottiene il profilo di rilevamento per un'istanza del flusso di lavoro specificata o per un tipo di flusso di lavoro.

Overload

GetProfile(Guid)

Deve essere sottoposto a override nella classe derivata e, in caso di implementazione, restituisce il profilo di rilevamento per l'istanza del flusso di lavoro specificata.

GetProfile(Type, Version)

Deve essere sottoposto a override nella classe derivata e, in caso di implementazione, restituisce il profilo di rilevamento, qualificato dalla versione, per il Type di flusso di lavoro specificato.

Commenti

Un servizio di rilevamento è responsabile della gestione dei profili di rilevamento disponibili per tipi e istanze del flusso di lavoro specifici. Questa gestione può essere implementata nel modo desiderato. Ad esempio, è possibile restituire lo stesso TrackingProfile per ogni Type di flusso di lavoro e istanza del flusso di lavoro. In alternativa, è possibile gestire un complesso archivio di profili di rilevamento in base all'istanza del flusso di lavoro, nonché al Type e alla Version del flusso di lavoro.

GetProfile(Guid)

Deve essere sottoposto a override nella classe derivata e, in caso di implementazione, restituisce il profilo di rilevamento per l'istanza del flusso di lavoro specificata.

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

Parametri

workflowInstanceId
Guid

Guid di istanza del flusso di lavoro.

Restituisce

TrackingProfile

Istanza di rilevamento per il tipo di flusso di lavoro specificato.

Esempio

Nel codice seguente viene illustrata un'implementazione del metodo GetProfile. In questo esempio, diversi overload del metodo GetProfile chiamano un singolo metodo GetProfile privato che restituisce un profilo di rilevamento specificato a livello di codice, ovvero il profilo di rilevamento predefinito. Questo esempio è tratto dall'esempio SDK Termination Tracking Service. Per altre informazioni, vedere Esempio di servizio di rilevamento della terminazione.

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

Commenti

Un servizio di rilevamento è responsabile della gestione dei profili di rilevamento disponibili per tipi e istanze del flusso di lavoro specifici. Questa gestione può essere implementata nel modo desiderato. Ad esempio, è possibile restituire lo stesso TrackingProfile per ogni Type di flusso di lavoro e istanza del flusso di lavoro. In alternativa, è possibile gestire un complesso archivio di profili di rilevamento in base all'istanza del flusso di lavoro, nonché al Type e alla Version del flusso di lavoro.

Si applica a

GetProfile(Type, Version)

Deve essere sottoposto a override nella classe derivata e, in caso di implementazione, restituisce il profilo di rilevamento, qualificato dalla versione, per il Type di flusso di lavoro specificato.

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

Parametri

workflowType
Type

Type del flusso di lavoro.

profileVersionId
Version

Version del profilo di rilevamento.

Restituisce

TrackingProfile

Profilo di rilevamento per il tipo di flusso di lavoro specificato.

Commenti

Un servizio di rilevamento è responsabile della gestione dei profili di rilevamento disponibili per tipi e istanze del flusso di lavoro specifici. Questa gestione può essere implementata nel modo desiderato. Ad esempio, è possibile restituire lo stesso TrackingProfile per ogni Type di flusso di lavoro e istanza del flusso di lavoro. In alternativa, è possibile gestire un complesso archivio di profili di rilevamento in base all'istanza del flusso di lavoro, nonché al Type e alla Version del flusso di lavoro.

Si applica a