Partager via


Services de suivi de Windows Workflow

Windows Workflow Foundation vous permet de suivre des informations concernant le workflow de façon cohérente, fiable et flexible. L'infrastructure de suivi de Windows Workflow Foundation est conçue pour permettre aux hôtes d'observer des instances de workflow lors de l'exécution en capturant des événements déclenchés pendant l'exécution du workflow. L'infrastructure est une conception enfichable qui permet aux hôtes d'écrire leur propre service de suivi ou d'utiliser un service de suivi prédéfini ou tiers. En outre, le moteur d'exécution de Windows Workflow Foundation vous permettant d'ajouter plusieurs services d'exécution pendant sa durée de vie, plusieurs services de suivi de différents types peuvent donc être activés simultanément. Par exemple, Windows Workflow Foundation contient un service SqlTrackingService prédéfini qui écrit un nombre configurable d'informations de suivi à une base de données SQL Server. Les exemples Windows Workflow Foundation contiennent également un exemple, ConsoleTrackingService Sample, qui écoute les événements et les renvoie à la console. Ces deux services peuvent être exécutés ensembles pour activer la visibilité de l'utilisateur final dans l'exécution du workflow et les informations de débogage pendant le développement.

Fonctionnalités de suivi dans Windows Workflow Foundation

Windows Workflow Foundation contient plusieurs fonctionnalités intégrées pour activer le suivi dans une application prenant en charge les workflows.

Fonctionnalité Description

S'assure que le suivi se produit de façon cohérente.

Les utilisateurs et les applications peuvent suivre l'état et l'historique du workflow pour les workflows actifs et ceux archivés sur le disque. Une infrastructure cohérente pour les services de suivi garantit que les services de suivi personnalisés suivent un modèle logique et cohérent.

Fournit une évolutivité et une fiabilité.

L'infrastructure de suivi est suffisamment légère pour être déployée sur un seul ordinateur, mais elle peut également être mise à l'échelle pour satisfaire les exigences de la plupart des entreprises telles que celles qui requièrent un environnement de centre de données en cluster et distribué.

Permet aux données du workflow d'être suivies indépendamment du magasin de données sous-jacent.

L'infrastructure de suivi est agnostique au magasin de données qui gère les événements de suivi. Un schéma bien défini permettant le suivi des événements est disponible pour les utilisateurs finaux. Toutefois, le magasin de données contrôle finalement le schéma pour les données sous-jacentes rendues persistantes.

Fournit un emplacement pour interroger les données concernant le workflow à travers des environnements d'hébergement.

Windows Workflow Foundation peut être hébergé dans plusieurs environnements ; les applications ont besoin d'une interface cohérente pour interroger les informations de workflow.

Fournit la capacité d'interroger les cycles de vie passés et présents du workflow et détermine de futurs chemins d'exécution possibles d'instances de workflow.

L'infrastructure de suivi offre un moyen d'émettre une définition de workflow et des métadonnées associées à un workflow pour permettre des requêtes de type aide. Elle offre également un moyen d'émettre des modifications de l'état des données afin que les états définis par l'utilisateur puissent être suivis.

Prend en charge la modification par programme aux modèles de suivi.

Vous pouvez créer des suivis de profil à l'aide du modèle objet de suivi de profil. Cela vous permet de charger autant de profils personnalisés que nécessaire pendant l'exécution de vos workflows actifs.

Suivis de profil

Les services de suivi déterminent la quantité de données qu'ils reçoivent à l'aide d'un modèle de suivi pour filtrer ces données. Un service de suivi peut recevoir des événements de workflow, l'état de l'exécution d'une activité et des éléments de données de suivi utilisateur personnalisés. Le service de suivi est responsable des données de suivi qu'il reçoit du moteur d'exécution lorsqu'une instance de workflow est en cours d'exécution. Il peut stocker les données dans un fichier ou dans une base de données, créer un magasin de requêtes en mémoire, écrire les données au journal des événements système, ou simplement renvoyer les données de suivi vers la console.

Vous pouvez créer des suivis de profil de façon déclarative à l'aide d'un schéma XML de suivi de profil, ou par programme à l'aide du modèle objet du suivi de profil. En outre, les suivis de profil basés sur XML peuvent être désérialisés dans une instance TrackingProfile à l'aide des API TrackingProfileSerializer.

Pour plus d'informations sur les suivis de profil, consultez Création et utilisation de profils de suivi.

Types d'événement de suivi

Lorsque vous utilisez le suivi dans Windows Workflow Foundation, vous pouvez suivre un événement unique ou un groupe d'événements déclenchés pendant l'exécution du workflow. Les événements qui peuvent être suivis pour les activités sont définis dans l'énumération ActivityExecutionStatus:

  • Initialisé

  • En cours d'exécution

  • Annulation

  • Fermé

  • Compensation

  • Erreur

En plus de suivre des événements pour les activités, l'infrastructure de suivi vous permet également de suivre des événements qui se produisent au niveau de l'instance du workflow. Les événements au niveau de l'instance qui peuvent être suivis sont définis dans l'énumération TrackingWorkflowEvent:

  • Créé

  • Terminé

  • Inactif

  • Interrompu

  • Repris

  • Persistant

  • Déchargé

  • Chargé

  • Exception

  • Arrêté

  • Abandonné

  • Modifié

  • Démarré

Pour plus d'informations sur le suivi des événements individuels, consultez Création et utilisation de profils de suivi.

Suivi au niveau du code explicite

Les développeurs qui génèrent des workflows et des tâches peuvent instrumenter leur code avec les événements de suivi explicites. Cela peut uniquement être fait si le suivi de profil ne peut pas être utilisé pour instrumenter l'exécution de l'événement de suivi désiré.

L'auteur du workflow peut utiliser l'une des méthodes surchargées TrackData sur ActivityExecutionContext pour suivre tout type d'information. Il n'y a aucune limite au nombre de points de suivi utilisateur et aucune restriction sur le type de données qui peuvent être envoyées par la méthode de suivi. Dans l'implémentation SqlTrackingService, si un objet passé dans le deuxième paramètre de la méthode TrackData n'est pas sérialisable en binaire, les données enregistrées sont le résultat de l'appel de la méthode ToString de cet objet.

Par exemple, la classe suivante est un objet personnalisé qui peut être utilisé pour suivre des messages de débogage pendant l'exécution de l'activité. La classe contient une propriété Message et une propriété MessageType qui indique si le message qui est suivi est une information, un avertissement, une erreur, ou pour déboguer, et par conséquent non affiché à l'utilisateur final. En outre, une méthode d'assistance statique est utilisée pour retourner un objet UserEventData construit récemment qui est utilisé pendant l'appel à la méthode TrackData.

[C#]

using System;
using System.Collections.Generic;
using System.Text;

namespace Microsoft.Samples.Workflow.TrackData
{
    [Serializable]
    public class UserEventData
    {
        private UserEventType type = 0;
        private string message = "";

        public enum UserEventType
        {
            Info = 0,
            Warning = 1,
            Error = 2,
            Debug = 4
        };

        public UserEventType MessageType
        {
            get { return type; }
            set { type = value; }
        }

        public string Message
        {
            get { return message; }
            set { message = value; }
        }

        public static UserEventData NewMessage(UserEventType type, string message)
        {
            UserEventData ret = new UserEventData();
            ret.MessageType = type;
            ret.Message = message;
            return ret;
        }
    }
}

La classe UserEventData définie dans l'exemple peut être utilisée comme un objet de suivi personnalisé lorsque vous créez une activité personnalisée. Pour suivre un objet UserEventData, appelez la méthode TrackData, en passant un nouvel objet UserEventData comme objet à suivre. Le code suivant indique comment faire ceci dans une activité personnalisée en substituant la méthode Execute:

[C#]

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
    this.TrackData(UserEventData.NewMessage(UserEventData.UserEventType.Debug, "Activity executing"));
}

Pour plus d'informations sur le suivi des données personnalisées, consultez Tracking Using User Track Points Sample.

Suivi des workflows à balisage

Avec les workflows à balisage et la fonctionnalité de suivi de Windows Workflow Foundation, vous pouvez utiliser un suivi de profil générique ou bien utiliser ReloadTrackingProfiles sur chaque instance de workflow avant de la démarrer, si vous souhaitez suivre des événements/éléments spécifiques de cette instance. Si vous décidez d'utiliser ReloadTrackingProfiles, vous devez créer une instance de workflow pour le BLOB XML, obtenir le GUID d'instance, générer un suivi de profil spécifique à cette instance, puis demander à l'instance de recharger ses profils. Le service de suivi doit retourner ce profil au moteur d'exécution de workflow lorsque GetProfile est appelé avec l'ID de l'instance. C'est là que la corrélation entre l'instance et le profil se produit.

Règles de suivi

Lorsqu'un RuleSet s'exécute, les événements de suivi sont envoyés aux services de suivi configurés sur les hôtes qui se sont inscrits à ces événements en ajoutant un UserTrackPoint à leur suivi de profil. Un RuleActionTrackingEvent est envoyé, fournissant le nom de la règle évaluée, ainsi que le résultat d'évaluation d'une condition (true/false). Pour plus d'informations, consultez RuleActionTrackingEvent Sample.

Les résultats d'évaluation des conditions de règle sur les activités peuvent être suivis implicitement en effectuant le suivi de l'exécution de l'activité.

Services de suivi personnalisés

Windows Workflow Foundation contient un service SqlTrackingService que vous pouvez utiliser pour suivre des données stockées dans une base de données SQL Server. Toutefois, à cause du modèle d'extensibilité utilisé par Windows Workflow Foundation, vous pouvez créer des services de suivi personnalisés qui utilisent un support de stockage différent, tel qu'un fichier local, parce que le moteur d'exécution n'a aucune inquiétude concernant la destination finale des données ou leur format d'expédition. Pour plus d'informations sur la création d'un service de suivi personnalisé, consultez Création de services de suivi personnalisés.

Dans cette section

Création et utilisation de profils de suivi

Utilisation de SqlTrackingService

Interrogation de données SqlTrackingService avec SqlTrackingQuery

Maintenance de données avec SqlTrackingService

Voir aussi

Référence

System.Workflow.Runtime.Tracking
TrackData
TrackingWorkflowEvent
ActivityExecutionStatus

Concepts

Création de services de suivi personnalisés

Autres ressources

Services Windows Workflow Foundation
Exercice 4 : utiliser des services d'exécution
Tracking Samples
Simple Tracking Example
Tracking Using User Track Points Sample

Footer image

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