Share via


Enregistrements de suivi

Cette rubrique s'applique à Windows Workflow Foundation 4.

L'exécution du flux de travail est instrumentée pour émettre des enregistrements de suivi pour suivre l'exécution d'une instance de workflow.

Enregistrements de suivi

Le tableau suivant détaille les enregistrements de suivi que l'exécution du flux de travail émet.

Enregistrement de suivi Description

Enregistrements du cycle de vie du flux de travail

Émis pendant différentes étapes du cycle de vie de l'instance de workflow. Par exemple, un enregistrement est émis lorsque le flux de travaille démarre ou se termine.

Enregistrements du cycle de vie de l'activité

Détaille l'exécution de l'activité. Ces enregistrements indiquent l'état d'une activité de workflow, par exemple lorsqu'une activité est planifiée, lorsque l'activité se termine, ou lorsqu'une erreur se produit.

Enregistrement de reprise de signet

Émis chaque fois qu'un signet au sein d'une instance de workflow est repris.

Suivi personnalisé des enregistrements

Un auteur de workflow peut créer des enregistrements de suivi personnalisés et les émettre dans une activité personnalisée.

Tous les enregistrements de suivi associés émis par le WF sont issus de la classe de base TrackingRecord, qui contient le jeu commun de données. Les enregistrements de suivi affichent le cycle de vie pour un workflow simple. Chaque enregistrement de suivi contient des détails à propos de l'événement de suivi associé, tel que InstanceId, RecordNumber et des informations supplémentaires spécifiques au type d'enregistrement de suivi.

Les types suivants d'objets TrackingRecord sont émis par l'exécution du workflow :

  • WorkflowInstanceRecord - Ce TrackingRecord décrit le cycle de vie de l'instance de workflow. Par exemple, un enregistrement est émis lorsque le workflow démarre ou se termine, et contient l'état de l'instance de workflow. Les détails de cet enregistrement se trouvent dans WorkflowInstanceRecord.

  • WorkflowInstanceAbortedRecord - Ce TrackingRecord est émis lorsqu'une instance de workflow échoue. L'enregistrement contient la raison pour laquelle l'instance de workflow a échoué. Les détails de cet enregistrement se trouvent dans WorkflowInstanceAbortedRecord.

  • WorkflowInstanceUnhandledExceptionRecord - Ce TrackingRecord est émis si une exception se produit dans l'instance de workflow et qu'elle n'est gérée par aucune activité. L'enregistrement contient les détails d'exception. Les détails de cet enregistrement se trouvent dans WorkflowInstanceUnhandledExceptionRecord.

  • WorkflowInstanceSuspendedRecord - Ce TrackingRecord est émis chaque fois qu'une instance de workflow est interrompue. L'enregistrement contient la raison pour laquelle l'instance de workflow a été interrompue. Les détails de cet enregistrement se trouvent dans WorkflowInstanceSuspendedRecord.

  • WorkflowInstanceTerminatedRecord - Ce TrackingRecord est émis chaque fois qu'une instance de workflow a abouti. L'enregistrement contient la raison pour laquelle l'instance de workflow a abouti. Les détails de cet enregistrement se trouvent dans WorkflowInstanceTerminatedRecord.

  • ActivityStateRecord - Ce TrackingRecord est émis lorsqu'une activité dans un workflow s'exécute. Ces enregistrements indiquent l'état de l'activité dans l'instance de workflow. Les détails de cet enregistrement se trouvent dans ActivityStateRecord.

  • ActivityScheduledRecord - Ce TrackingRecord est émis lorsqu'une activité planifie une activité enfant. Cet enregistrement contient des détails pour à la fois l'activité parent (planification de l'activité) et l'activité enfant planifiée. Les détails de cet enregistrement se trouvent dans ActivityScheduledRecord.

  • FaultPropagationRecord - Ce TrackingRecord est émis pour chaque gestionnaire qui consulte l'enregistrement jusqu'à ce qu'il soit pris en charge. Il est utilisé pour dénoter le chemin d'accès qu'une erreur a pris dans l'instance de workflow. Les détails de cet enregistrement se trouvent dans FaultPropagationRecord.

  • CancelRequestedRecord - Ce TrackingRecord est émis chaque fois qu'une activité essaie d'annuler une activité enfant. Cet enregistrement contient des détails pour à la fois l'activité parent et l'activité enfant en cours d'annulation. Les détails de cet enregistrement se trouvent dans CancelRequestedRecord.

  • BookmarkResumptionRecord - Ce TrackingRecord suit tout signet repris avec succès. Les détails de cet enregistrement se trouvent dans BookmarkResumptionRecord.

  • CustomTrackingRecord - Ce TrackingRecord est créé et émis par un auteur de workflow au sein d'une activité de workflow personnalisée. Les enregistrements de suivi personnalisés peuvent être remplis à l'aide des données utilisées pour remplir les enregistrements. Les détails de cet enregistrement se trouvent dans CustomTrackingRecord.

Par exemple, il pourrait y avoir une activité Sequence simple qui contient une opération WriteLine avec les enregistrements de suivi émis dans l'ordre suivant.

  1. WorkflowInstanceRecord indique que le flux de travail démarre.

  2. ActivityScheduledRecord indique qu'une activité a été planifiée. Dans ce cas c'est une activité Sequence.

  3. ActivityScheduledRecord représente l'activité WriteLine.

  4. Il y a deux enregistrements ActivityStateRecord qui représentent les deux activités en cours.

  5. WorkflowInstanceRecord indique que le flux de travail est terminé.

Émission d'enregistrements de suivi personnalisés

Les enregistrements de suivi personnalisés peuvent être issus d'une activité de code comme indiqué dans l'exemple suivant.

protected override void Execute(CodeActivityContext context)
{
…
            CustomTrackingRecord customRecord = new CustomTrackingRecord("CustomEmailSentEvent");
            customRecord.Data.Add("SendTime", sendTime);
            context.Track(customRecord);
}

Un CustomTrackingRecord est émis dans une activité de code en appelant la méthode Track sur l' ActvityContext.