Using Persistence Services, exemple

Download sample

Cet exemple illustre l'utilisation du service SqlWorkflowPersistenceService pour charger et décharger des workflows.

De nombreux processus d'entreprise durent pendant de longues périodes (pouvant atteindre plusieurs mois, voire plusieurs années). Conserver le workflow en mémoire est non seulement irréaliste (en raison des limitations de mémoire), mais empêche également toute évolutivité car une instance doit être traitée sur un serveur unique. Un grand nombre de ces workflows de longue durée n'exécutent pas de flux ou de processus logique de manière active et sont en fait inactifs, en attente de réponse d'un utilisateur ou d'autres systèmes. En déchargeant une instance inactive, l'application hôte peut économiser de la mémoire et permettre une montée en charge des serveurs de traitement. Cet exemple montre comment décharger une instance inactive avec un workflow simple qui attend cinq secondes avant de se terminer.

NoteRemarque :

SqlWorkflowPersistenceService peut également être configuré pour décharger automatiquement des workflows inactifs en affectant la valeur True au paramètre UnloadOnIdle dans le constructeur.

Configuration de la base de données

Les services SQL installés par Windows Workflow Foundation utilisent Microsoft SQL Server pour stocker des informations. Vous pouvez utiliser Microsoft SQL Server 2005 Express, SQL Server 2000 et versions ultérieures ou SQL Server 2000 Desktop Engine (MSDE) pour ces tâches.

Windows Workflow Foundation Setup n'installe pas les bases de données requises par ces services ; toutefois, il installe les scripts SQL pour créer et configurer les bases de données pour ces services.

NoteRemarque :

Le service Microsoft Distributed Transaction Coordinator (MSDTC) doit être activé pour permettre le fonctionnement de SqlWorkflowPersistenceService.

Les étapes suivantes décrivent comment créer et configurer les bases de données utilisées par les services de cet exemple.

Pour créer et configurer la base de données SQL

  1. À l'aide de 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 SqlPersistenceService 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 SQL, 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>\SqlPersistenceService_Schema.

  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>\SqlPersistenceService_Logic.

  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.

Procédure pas à pas d'exemple

Le workflow est un workflow séquentiel qui contient trois activités dans l'ordre suivant : code1, delay1 et code2. Les activités CodeActivity enregistrent la date et l'heure UTC actuelles sur la console, tandis que l'activité DelayActivity attend cinq secondes avant de continuer. L'application hôte gère le chargement et le déchargement de l'instance de workflow en mémoire en fournissant des gestionnaires pour différents événements WorkflowRuntime.

L'exécution se présente comme suit :

  1. Le workflow est créé et démarré par l'hôte.

  2. Code1 affiche la date et l'heure UTC actuelles sur la console.

  3. Le workflow active l'activité delay1.

  4. L'instance de workflow est maintenant inactive, en attente de l'expiration de la minuterie. Lorsque le workflow devient inactif, WorkflowRuntime déclenche l'événement WorkflowIdled.

  5. La méthode Unload effectue un appel dans le service SqlWorkflowPersistenceService pour rendre l'instance de workflow persistante. L'exécution du workflow supprime ensuite l'instance de workflow.

  6. Après au moins cinq secondes, la minuterie expire.

  7. Le service SqlWorkflowPersistenceService charge le workflow à partir de la base de données et son exécution continue le traitement.

  8. Code2 affiche ensuite la date et l'heure UTC sur la console. La date/heure doit être ultérieure de cinq secondes à l'heure affichée par code1.

  9. Lorsque l'instance de workflow est terminée, l'exécution du workflow effectue des appels dans le service SqlWorkflowPersistenceService pour rendre le dernier état du workflow persistant.

Services personnalisés

Cet exemple utilise les services prédéfinis pour la persistance d'état ; toutefois, vous pouvez également créer des services de persistance d'état personnalisés. Vous en aurez éventuellement besoin pour utiliser des systèmes de bases de données actuels ou pour apporter des fonctionnalités supplémentaires. Pour plus d'informations sur le développement de services personnalisés, consultez les exemples répertoriés dans cette rubrique, ainsi que la documentation de Windows Workflow Foundation.

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

Voir aussi

Référence

SqlWorkflowPersistenceService
WorkflowPersistenceService

Autres ressources

Custom Persistence Service, exemple
Raise Event to Load Workflow, exemple
Windows Workflow Persistence Services
Exercise 4 : Using Runtime Services
Using the SqlWorkflowPersistenceService Service
Exemples d'hébergement
Task 3 : Using the Windows Workflow Persistence Service

Footer image

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