Partager via


Compensation, exemple

Download sample

La compensation définit l'exécution de la logique métier qui résulte d'une exception d'entreprise. Elle se situe uniquement dans la portée du concepteur de workflow qui modélise un processus d'entreprise ; le déclenchement de la compensation est défini par l'utilisateur plutôt que par l'exécution. L'exécution fournit le mécanisme avec lequel la compensation est définie.

Dans cet exemple, l'unité de travail compensée est contenue dans une activité CompensatableTransactionScopeActivity. Une activité CompensationHandlerActivity est ensuite définie pour cette portée, dans le cadre de laquelle le travail de compensation est défini. Comme une portée ne peut être compensée qu'une fois terminée, une activité ThrowActivity lève une exception une fois que la portée a cessé son exécution. Cette exception est interceptée par un gestionnaire d'exceptions qui contient une activité de compensation. L'activité de compensation spécifie la portée cible que l'exécution exécutera par la suite.

Dans ce scénario, un bon de commande est reçu et des fonds sont débités de la carte de crédit de l'acheteur. Le workflow vérifie si le produit sélectionné est disponible. S'il est disponible, le produit est expédié. Si le produit n'est plus disponible, une exception DiscontinuedProductException est levée. L'exception DiscontinuedProductException est interceptée par le gestionnaire d'exceptions du workflow. Le gestionnaire d'exceptions déclenche ensuite le gestionnaire de compensation défini par le CompensateActivity contenu dans le gestionnaire. Le gestionnaire de compensation recrédite alors les fonds à l'acheteur.

Le résultat obtenu avec cet exemple se présente comme suit :

Résultat de l'exemple Compensation

Utilisation de l'exemple

Pour utiliser cet exemple, vous devez créer la base de données de persistance SQL.

Pour créer la base de données de persistance SQL

  1. Dans Microsoft SQL Server 2005 Express, SQL Server 2000 et versions ultérieures ou SQL Server 2000 Desktop Engine (MSDE), créez une base de données nommée WorkflowPersistenceStore avec l'instruction de requête SQL :

    CREATE DATABASE SqlPersistenceService

    Remarque   lors de l'utilisation simultanée de SqlTrackingService et de SqlWorkflowPersistenceService dans une application de workflow, il est recommandé d'utiliser une base de données unique à la fois pour la persistance et le suivi.

  2. Dans l'espace de travail de l'Analyseur de requêtes de SQL Server, sélectionnez la base de données que vous avez créée à l'étape 1 dans la liste des bases de données disponibles.

  3. Dans le menu Fichier, cliquez sur Ouvrir et ouvrez le script SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<langue>\SqlPersistence_Schema.sql.

  4. Exécutez la requête en cliquant sur Exécuter ou en appuyant sur la touche F5 pour créer les tables de service de persistance SQL.

  5. Dans le menu Fichier, cliquez sur Ouvrir et ouvrez le script SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<langue>\SqlPersistence_Logic.sql.

  6. Exécutez la requête en cliquant sur Exécuter ou en appuyant sur la touche F5 pour créer les procédures stockées de service de persistance SQL.

Pour générer l'exemple

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

    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 Compensation\bin\debug (ou le dossier Compensation\bin pour la version VB de l'exemple), situé sous le dossier principal de l'exemple.

Voir aussi

Référence

CompensatableTransactionScopeActivity
CompensationHandlerActivity
CodeActivity
FaultHandlerActivity
FaultHandlersActivity
IfElseActivity
IfElseBranchActivity
ThrowActivity

Autres ressources

Using the CompensationHandler Activity
Adding Compensatable Activities and Compensation Handlers
Compensation Overview
Exemples d'activités
Exemples de Windows Workflow Foundation

Footer image

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