Partager via


Persistance d'une application de workflow

Cette rubrique s'applique à Windows Workflow Foundation 4.

Cet exemple montre comment exécuter un WorkflowApplication, le décharger lorsqu'il devient inactif et le recharger pour continuer son exécution.

Détails de l'exemple

WorkflowApplication est un hôte pour une instance de workflow unique qui fournit une interface simple et active certains des scénarios d'hébergement les plus courants. Un tel scénario est constitué de workflows de longue durée facilités par la persistance. Le contrôle hôte de persistance est effectué en appelant une opération de persistance sur le WorkflowApplication, ou en gérant un événement WorkflowApplication et en indiquant que le WorkflowApplication doit être persistant.

L'exemple de workflow d est une activité WriteLine qui invite l'utilisateur à entrer son nom, une activité ReadLine pour la réception du nom comme entrée via la reprise d'un Bookmark et un autre WriteLine pour retourner un message d'accueil à l'utilisateur. Lorsqu'un workflow attend une entrée, cela fournit un point naturel pour la persistance. Ce point est souvent désigné sous le nom de point Idle. WorkflowApplication déclenche l'événement Idle chaque fois que le programme de workflow peut être rendu persistant, attend une reprise de signet et qu'aucun autre travail n'est effectué. Dans le workflow de cet exemple, ce point vient immédiatement après le début de l'exécution de l'activité ReadLine.

Un WorkflowApplication est configuré pour effectuer des opérations de persistance avec un InstanceStore. Cet exemple utilise SqlWorkflowInstanceStore. Le InstanceStore doit être assigné à la propriété InstanceStore avant l'exécution de WorkflowApplication.

L'exemple ajoute un gestionnaire à l'événement PersistableIdle. Le gestionnaire de cet événement indique ce que le WorkflowApplication doit faire en retournant un PersistableIdleAction. Lorsque Unload est retourné, le WorkflowApplication est déchargé.

L'exemple accepte ensuite une entrée de l'utilisateur et charge le workflow persistant dans un nouveau WorkflowApplication. Pour ce faire, il crée un WorkflowApplication, recrée le InstanceStore et associe les événements terminés et déchargés à l'instance, puis appelle Load avec l'identificateur de l'instance de workflow cible. Une fois l'instance acquise, le signet de l'activité ReadLine est repris. Le workflow continue l'exécution à partir de l'activité ReadLine et s'exécute entièrement. Lorsque le workflow est terminé et déchargé, le InstanceStore est appelé une dernière fois pour supprimer le workflow.

Pour utiliser cet exemple

  1. Ouvrez une invite de commandes Visual Studio 2010.

    Cet exemple requiert SQL Server Express, installé par défaut avec Visual Studio 2010.

  2. Accédez au répertoire de l'exemple (\WF\Basic\Persistence\InstancePersistence\CS) et exécutez CreateInstanceStore.cmd.

    Dd807516.Caution(fr-fr,VS.100).gifAttention :
    Le script CreateInstanceStore.cmd tente de créer la base de données sur l'instance par défaut de SQL Server 2008 Express. Si vous voulez installer la base de données sur une instance différente, modifiez le script en conséquence.

  3. À l'aide de Visual Studio 2010, ouvrez le fichier solution Persistence.sln et appuyez sur F6 pour le générer.

    Dd807516.Caution(fr-fr,VS.100).gifAttention :
    Si vous avez installé la base de données sur une instance autre que l'instance par défaut de SQL Server, mettez à jour la chaîne de connexion dans le code avant de générer la solution.

  4. Exécutez l'exemple avec des privilèges d'administrateur. Pour ce faire, accédez au répertoire bin du projet (\WF\Basic\Persistence\InstancePersistence\bin\Debug) dans l'Explorateur Windows, cliquez avec le bouton droit sur Workflow.exe, puis sélectionnez Exécuter en tant qu'administrateur.

Pour supprimer la base de données du magasin d'instances

  1. Ouvrez une invite de commandes Visual Studio 2010.

  2. Accédez au répertoire de l'exemple et exécutez RemoveInstanceStore.cmd.

Dd807516.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\Persistence\InstancePersistence