Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

TrackingProfile-Klasse

Aktualisiert: November 2007

Definiert relevante Punkte im möglichen Ausführungspfad einer Stammworkflowinstanz, zu denen ein Überwachungsdienst benachrichtigt werden soll.

Namespace:  System.Workflow.Runtime.Tracking
Assembly:  System.Workflow.Runtime (in System.Workflow.Runtime.dll)

[SerializableAttribute]
public class TrackingProfile
/** @attribute SerializableAttribute */ 
public class TrackingProfile
public class TrackingProfile

Während eine Workflowinstanz ausgeführt wird, gibt sie Verfolgungsereignisse an die Laufzeitverfolgungsinfrastruktur aus. Die Laufzeitverfolgungsinfrastruktur verwendet ein TrackingProfile, um diese Verfolgungsereignisse zu filtern, und gibt Verfolungsdaten basierend auf diesem Filter an einen Überwachungsdienst zurück. Es gibt drei Arten von Verfolgungsereignissen, die gefiltert werden können: Aktivitätsstatusereignisse, Workflowstatusereignisse und Benutzerereignisse. Sie können der ActivityTrackPoints-Eigenschaft ActivityTrackPoint-Objekte hinzufügen, um bestimmte Aktivitätsstatusereignisse abzugleichen; der WorkflowTrackPoints-Eigenschaft WorkflowTrackPoint-Objekte, um bestimmte Workflowstatusereignisse abzugleichen; und der UserTrackPoints-Eigenschaft UserTrackPoint-Objekte, um bestimmte Benutzerereignisse abzugleichen. Beim Abgleich eines Verfolgungspunkts gibt die Laufzeitverfolgungsinfrastruktur die Daten, die dem Verfolgungsereignis zugeordnet sind, an den Überwachungsdienst zurück. Dazu wird der TrackingChannel verwendet, der dem Überwachungsdienst zugeordnet ist. Die Daten werden je nach dem Typ des abgeglichenen Verfolgungspunkt entweder in ActivityTrackingRecord, WorkflowTrackingRecord oder UserTrackingRecord zurückgegeben.

Ein Überwachungsdienst implementiert die Methoden in der abstrakten TrackingService-Klasse. Damit wird für die Laufzeitverfolgungsinfrastruktur die Funktionalität zum Anfordern eines dem Dienst zugeordneten TrackingChannel und ein TrackingProfile bereitgestellt, das einer bestimmten Workflowinstanz oder einem bestimmten Workflowtyp zugeordnet ist. Ein Überwachungsdienst muss auch die abstrakte TrackingChannel-Klasse implementieren, um den Kanal bereitzustellen, über den die Laufzeitverfolgungsinfrastruktur Verfolgungsdatensätze sendet.

Wenn der Überwachungsdienst ein Verfolgungsprofilobjekt an das Laufzeitmodul zurückgibt, beginnt die Ausführung des Workflows und das Verfolgungsprofil wird serialisiert. Schlägt die Serialisierung des Verfolgungsprofils fehl, wird eine Ausnahme für die Workflowinstanz ausgelöst. Wenn die Ausnahme nicht behandelt wird, wird die Workflowinstanz beendet. Das Verfolgungsprofil kann vor der Übergabe an das Laufzeitmodul mit der Schema-Eigenschaft überprüft werden.

TrackingProfile kann mit TrackingProfileSerializer serialisiert werden. Dabei wird XML nach dem Schema formatiert. Dieses Format eignet sich besonders zum Speichern von Profilen und zum nicht programmgesteuerten Erstellen von Profilen. Der SQL-Überwachungsdienst beispielsweise speichert serialisierte Versionen seiner Verfolgungsprofile. Auch Überwachungsdienste, die Sie basierend auf der SqlTrackingService-Klasse erstellen, speichern serialisierte Profile.

Im folgenden Codebeispiel wird veranschaulicht, wie mit TrackingProfile ein TrackingProfile erstellt wird. Dieses Codebeispiel verwendet die Eigenschaften ActivityTrackPoints, Version und WorkflowTrackPoints.

Dieses Codebeispiel stammt aus dem Query using SQLTrackingService SDK-Beispiel in der Datei Program.cs. Weitere Informationen finden Sie unter Beispiel für die Abfrage mit 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);
}


System.Object
  System.Workflow.Runtime.Tracking.TrackingProfile

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0
Anzeigen: