Partager via


ConsoleTrackingService, exemple

Download sample

Cet exemple montre comment créer un service de suivi et écrire le contenu des données suivies sur la console.

Windows Workflow Foundation fournit une infrastructure de suivi qui permet aux applications de suivre les données et les modifications d'état du workflow. En outre, il vous permet de créer les services de suivi les plus appropriés pour vos besoins professionnels et d'utiliser ces services de suivi dans l'exécution de workflow.

Pour écrire un service de suivi, vous devez implémenter un canal et un service de suivi. Le canal de suivi reçoit les enregistrements de suivi envoyés par l'exécution. Le service de suivi fournit à l'exécution des profils de suivi en fonction de conditions et de paramètres spécifiques. Il est également chargé de fournir un canal de suivi qui reçoit les données envoyées par l'exécution.

NoteRemarque :

La valeur horaire dans les données de suivi est exprimée en temps universel coordonné (GMT).

Vue d'ensemble de l'exemple

L'exemple est une application console de workflow qui contient un workflow et un service de suivi simple. SampleWorkflow est un workflow qui comporte un gestionnaire de code dans lequel est émis un UserTrackPoint.

Le service de suivi complet est implémenté dans ConsoleTrackingService.cs et présente les implémentations TrackingChannelSample et ConsoleTrackingService suivantes :

  • TrackingChannelSample implémente la méthode Send comme suit :

    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);
        }
    }
    

En outre, TrackingChannelSample implémente la méthode InstanceCompletedOrTerminated en écrivant un message sur la console. La méthode InstanceCompletedOrTerminated est appelée par l'exécution de suivi pour indiquer que l'instance de workflow a terminé son exécution, indépendamment du profil de suivi associé à cette instance.

  • ConsoleTrackingService implémente la méthode suivante :

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

Pour générer l'exemple

  1. Téléchargez l'exemple en cliquant sur Télécharger l'exemple.

    L'exemple de projet est alors extrait sur votre disque dur local.

  2. Cliquez sur Démarrer, pointez sur Programmes, puis sur Microsoft Windows SDK et cliquez sur Environnement de commande.

  3. Accédez au répertoire source de l'exemple.

  4. À l'invite de commandes, tapez MSBUILD <Nom du fichier solution>.

Pour exécuter l'exemple

  • Dans la fenêtre Invite de commandes du Kit de développement SDK, exécutez le fichier .exe dans le dossier ConsoleTrackingService\bin\debug (ou le dossier ConsoleTrackingService\bin pour la version VB de l'exemple), situé sous le dossier principal de l'exemple.

Rubriques avancées

Les rubriques suivantes ne sont pas implémentées dans l'exemple. Il s'agit de pointeurs vers des rubriques de workflow plus avancées à explorer.

Exécution et communication de services de suivi

Les appels d'exécution aux services de suivi sont synchrones. L'exécution de workflow est bloquée jusqu'à ce que vous quittiez les méthodes de service de suivi.

Mises à jour de profil

Windows Workflow Foundation vous permet de communiquer des mises à jour de profil ou des suppressions à l'exécution de suivi par dérivation de IProfileNotification et implémentation de gestionnaires d'événements comme suit :

public class ConsoleTrackingService : TrackingService, IProfileNotification

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

ReloadProfiles

Si vous souhaitez recharger un profil pour une instance de workflow spécifique, vous pouvez appeler ReloadTrackingProfiles sur l'instance comme suit :

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

L'exécution appelle alors la méthode TryReloadProfile sur le TrackingService inscrit afin de recevoir le nouveau profil pour cette instance.

Surcharges GetProfile

L'exécution de workflow appelle la méthode suivante pour demander un profil pour un workflowInstanceId spécifique. Implémentez cette méthode si vous prenez en charge le rechargement de profils spécifiques à une instance.

GetProfile(Guid workflowInstanceId)

L'exécution de workflow appelle la méthode suivante pour demander un profil spécifique à une version. Implémentez cette méthode si vous prenez en charge le rechargement de profils spécifiques à une version.

GetProfile(Type workflowType, Version profileVersionId)

Voir aussi

Référence

ActivityTrackingRecord
WorkflowTrackingRecord
IProfileNotification

Autres ressources

Exemples de suivi
Simple Tracking, exemple
Query Using SQLTrackingService, exemple
Tracking Using User Track Points, exemple
EventArgs Tracking, exemple
Query Using SQLTrackingService, exemple
RuleActionTrackingEvent, exemple
File Tracking Service and Query, exemple
Using the Tracking Profile Object Model, exemple
SQL Data Maintenance, exemple
Windows Workflow Tracking Services

Footer image

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.