Partager via


Confirmation

Cette rubrique s'applique à Windows Workflow Foundation 4.

Cet exemple présente quatre scénarios courants se rapportant à l'utilisation de CompensableActivity et à la confirmation. L'exemple exécute quatre workflows pour illustrer la confirmation. Cet exemple est disponible dans les versions déclarative et impérative.

Confirmer une activité compensable

Le premier workflow, qui est composé d'une séquence de deux instances CompensableActivity, montre comment confirmer une activité compensable. Après l'achèvement du deuxième CompensableActivity, une activité de confirmation confirme la première activité. Lorsque le workflow se termine correctement, toutes les instances CompensableActivity qui n'ont pas été confirmées ou compensées sont automatiquement confirmées dans l'ordre par défaut. Sans la confirmation, le deuxième CompensableActivity aurait été confirmé en premier.

Compensation explicite

Le deuxième scénario présente l'effet sur la confirmation par défaut lorsqu'un CompensableActivity est compensé de manière explicite. Le workflow est composé d'une séquence de deux activités CompensableActivity. Une fois la deuxième terminée, la première est compensée de manière explicite. Par conséquent, lorsque le workflow se termine, seul le deuxième CompensableActivity est confirmé.

Contrôle de l'ordre de confirmation pour les activités CompensableActivity imbriquées

Le troisième scénario montre comment contrôler l'ordre de confirmation pour des CompensableActivity imbriqués. Le scénario est composé d'un CompensableActivity comme racine du workflow. Le corps du CompensableActivity racine est une séquence de trois CompensableActivity. Le ConfirmationHandler pour le CompensableActivity racine est une séquence qui spécifie le premier CompensableActivity imbriqué doit être confirmé, puis le deuxième. Lorsque le workflow se termine, il confirme le CompensableActivity racine, qui confirme ensuite le premier, le deuxième et le troisième CompensableActivity imbriqués, dans cet ordre. Par conséquent, l'ordre de confirmation par défaut est fondamentalement inversé. Étant donné que le troisième CompensableActivity n'a pas été explicitement confirmé dans le cadre du CompensableActivity racine par ConfirmationHandler, il est confirmé d'après l'ordre par défaut. Toutefois, étant donné qu'il est le seul CompensableActivity non confirmé, cela signifies simplement qu'il est confirmé.

Étendue des variables

Le quatrième scénario montre comment la durée de vie des variables définies pour un CompensableActivity ou l'un de ses parents se trouve toujours dans l'étendue lorsque le gestionnaire de compensation, ConfirmationHandler ou CancellationHandler sont exécutés, même si l'activité ou le workflow sont terminés. Le workflow est composé d'une séquence de deux CompensableActivity. Dans le corps du premier, la valeur de la variable mySum est la somme de 5 et de 10, et le résultat est imprimé. Dans le corps du deuxième CompensableActivity, la valeur de la somme est la somme existante à laquelle est ajoutée la valeur 7, et le résultat est imprimé. Un gestionnaire de confirmation personnalisé est défini pour le premier CompensableActivity, qui imprime la somme, soustrait 7, et imprime à nouveau la somme. En inspectant les sommes imprimées, il est clair que la variable se trouve dans l'étendue non seulement pour les corps des deux CompensableActivity, mais également pour ConfirmationHandler.

Pour exécuter l'exemple

  1. Chargez la solution dans Visual Studio 2010.

  2. Exécutez l'application ConfirmationSample.exe.

  3. Observez la sortie suivante :

    Explicit confirmation:Start of workflowCompensableActivity1: BodyCompensableActivity2: BodyCompensableActivity1: Confirmation HandlerEnd of workflowCompensableActivity2: Confirmation HandlerExplicit compensation:Start of workflowCompensableActivity1: BodyCompensableActivity2: BodyCompensableActivity1: Compensation HandlerEnd of workflowCompensableActivity2: Confirmation HandlerCustom confirmation handler:Start of workflowCompensableActivity1: BodyCompensableActivity2: BodyCompensableActivity3: BodyEnd of workflowCompensableActivity1: Confirmation HandlerCompensableActivity2: Confirmation HandlerCompensableActivity3: Confirmation HandlerVariable access in a confirmation handler:Start of workflowCompensableActivity1: BodyCompensableActivity1: The sum is: 15CompensableActivity2: BodyCompensableActivity2: Adding 7 to the sumCompensableActivity2: The sum is now: 22End of workflowCompensableActivity2: Confirmation HandlerCompensableActivity1: Confirmation HandlerCompensableActivity2: The sum is: 22CompensableActivity2: After subtracting 12 the sum is now: 10Press ENTER to exit.
Dd807507.Important(fr-fr,VS.100).gif Remarque :
Les exemples peuvent déjà être installés sur votre ordinateur. Recherchez le répertoire (par défaut) suivant avant de continuer.

<LecteurInstall>:\WF_WCF_Samples

Si ce répertoire n'existe pas, rendez-vous sur la page (éventuellement en anglais) des exemples Windows Communication Foundation (WCF) et Windows Workflow Foundation (WF) pour .NET Framework 4 pour télécharger tous les exemples Windows Communication Foundation (WCF) et WF. Cet exemple se trouve dans le répertoire suivant.

<LecteurInstall>:\WF_WCF_Samples\WF\Basic\Compensation\Confirmation