Share via


ConsoleTrackingService-Beispiel

Download sample

Dieses Beispiel veranschaulicht das Erstellen eines Überwachungsdiensts und das Ausgeben des Inhalts von überwachten Daten in der Konsole.

Windows Workflow Foundation stellt eine Überwachugnsinfrastruktur bereit, mit der Anwendungen Änderungen des Workflowstatus und Daten überwachen können. Sie bietet Ihnen darüber hinaus die Flexibilität, die für Ihre Geschäftsanforderungen am besten geeigneten Überwachungsdienste zu erstellen und diese Überwachungsdienste in der Workflowlaufzeit zu verwenden.

Um einen Überwachungsdienst schreiben zu können, müssen Sie einen Überwachungskanal und einen Überwachungsdienst implementieren. Der Überwachungskanal empfängt die Überwachungsdatensätze, die von der Laufzeit gesendet werden. Der Überwachungsdienst stellt der Laufzeit die Überwachungsprofile basierend auf bestimmten Parametern und Bedingungen zur Verfügung. Außerdem ist er für die Bereitstellung eines Überwachungskanals verantwortlich, der die von der Laufzeit gesendeten Daten empfängt.

Tipp

Der in den Überwachungsdaten angegebene Zeitwert liegt im Coordinated Universal Time (Greenwich Mean Time)-Format vor.

Beispielübersicht

Das Beispiel ist eine Workflowkonsolenanwendung, die einen Workflow und einen einfachen Überwachungsdienst umfasst. SampleWorkflow ist ein Workflow mit einem Codehandler, in dem ein UserTrackPoint ausgegeben wird.

Der vollständige Überwachungsdienst ist in ConsoleTrackingService.cs implementiert und verfügt über die folgenden TrackingChannelSample- und ConsoleTrackingService-Implementierungen:

  • TrackingChannelSample implementiert die Send-Methode wie folgt:

    public override void Send(TrackingRecord record)
    {
        // Filter on record type.
        if (record is WorkflowTrackingRecord)
        {
            WriteWorkflowTrackingRecord((WorkflowTrackingRecord)record);
        }
        if (record is ActivityTrackingRecord)
        {
            WriteActivityTrackingRecord((ActivityTrackingRecord)record);
        }
        if (record is UserTrackingRecord)
        {
            WriteUserTrackingRecord((UserTrackingRecord)record);
        }
    }
    

Darüber hinaus implementiert TrackingChannelSample die InstanceCompletedOrTerminated-Methode, indem eine Nachricht in der Konsole ausgegeben wird. Die InstanceCompletedOrTerminated-Methode wird von der Überwachungslaufzeit aufgerufen, um anzugeben, dass die Ausführung der Workflowinstanz abgeschlossen ist, unabhängig davon, welches Überwachungsprofil mit dieser Instanz verknüpft ist.

  • ConsoleTrackingService implementiert die folgende Methode:

    public override TrackingChannel GetTrackingChannel(TrackingParameters parameters)
    {
        //Return a tracking channel to receive runtime events.
        return new TrackingChannelSample(parameters);
    }
    

So erstellen Sie das Beispiel

  1. Laden Sie das Beispiel herunter, indem Sie auf Beispiel downloaden klicken.

    Hierdurch wird das Beispielprojekt auf die lokale Festplatte extrahiert.

  2. Klicken Sie auf Start, zeigen Sie auf Programme, zeigen Sie auf Microsoft Windows SDK, und klicken Sie dann auf CMD Shell.

  3. Wechseln Sie zum Quellverzeichnis des Beispiels.

  4. Geben Sie an der Eingabeaufforderung MSBUILD <Name der Projektmappendatei> ein.

So führen Sie das Beispiel aus

  • Führen Sie im Eingabeaufforderungsfenster des SDKs die EXE-Datei im Ordner ConsoleTrackingService\bin\debug aus (bzw. im Ordner ConsoleTrackingService\bin für die VB-Version des Beispiels), der sich unter dem Hauptordner des Beispiels befindet.

Weiterführende Themen

Die folgenden Themen sind in dem Beispiel nicht implementiert. Sie verweisen auf weiterführende Workflowthemen.

Laufzeit- und Überwachungsdienstkommunikation

Laufzeitaufrufe der Überwachungsdienste sind synchron. Die Ausführung des Workflows wird blockiert, bis eine Rückkehr von den Überwachungsdienstmethoden erfolgt ist.

Profilaktualisierungen

Windows Workflow Foundation gibt Ihnen die Möglichkeit, die Aktualisierung oder das Löschen von Profilen an die Überwachungslaufzeit zu kommunizieren, indem Ableitungen von IProfileNotification erstellt und Ereignishandler wie folgt implementiert werden:

public class ConsoleTrackingService : TrackingService, IProfileNotification

public event EventHandler<ProfileUpdatedEventArgs> ProfileUpdated;
public event EventHandler<ProfileRemovedEventArgs> ProfileRemoved;

ReloadProfiles

Wenn Sie ein Profil für eine bestimmte Workflowinstanz neu laden möchten, können Sie ReloadTrackingProfiles wie folgt für die Instanz aufrufen:

WorkflowInstance wi = wr.StartWorkflow(typeof(SampleWorkflow));
wi.ReloadTrackingProfiles();

Hierdurch ruft die Laufzeit die TryReloadProfile-Methode des registrierten TrackingService auf, um das neue Profil für diese Instanz zu erhalten.

GetProfile-Überladungen

Die Workflowlaufzeit ruft die folgende Methode auf, um ein Profil für eine bestimmte workflowInstanceId zu erhalten. Implementieren Sie diese Methode, wenn Sie das Neuladen instanzspezifischer Profile unterstützen.

GetProfile(Guid workflowInstanceId)

Die Workflowlaufzeit ruft die folgende Methode auf, um ein Profil für eine bestimmte Version zu erhalten. Implementieren Sie diese Methode, wenn Sie das Neuladen versionsspezifischer Profile unterstützen.

GetProfile(Type workflowType, Version profileVersionId)

Siehe auch

Referenz

ActivityTrackingRecord
WorkflowTrackingRecord
IProfileNotification

Weitere Ressourcen

Überwachungsbeispiele
Einfaches Überwachungsbeispiel
Beispiel für die Abfrage mit SQLTrackingService
Beispiel für das Überwachen mit Benutzerüberwachungspunkten
EventArgs-Überwachungsbeispiel
Beispiel für die Abfrage mit SQLTrackingService
RuleActionTrackingEvent-Beispiel
Beispiel für einen Dateiüberwachungsdienst und Abfrage
Beispiel für das Verwenden des Überwachungsprofil-Objektmodells
Beispiel für die SQL-Datenpflege
Windows Workflow Tracking Services

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.