Partager via


Concepts Windows Workflow fondamentaux

Cette rubrique s'applique à Windows Workflow Foundation 4.

Le développement de flux de travail dans .NET Framework version 4 fait appel à des concepts que certains développeurs peuvent ne pas connaître. Cette rubrique en décrit quelques-uns, ainsi que la façon dont ils sont implémentés.

Flux de travail et activités

Un flux de travail est une collection structurée d'actions qui modélise un processus. Chaque action du flux de travail est modélisée en tant qu'activité. Un hôte interagit avec un flux de travail à l'aide des objets suivants : WorkflowInvoker pour l'appel d'un flux de travail comme s'il s'agissait d'une méthode, WorkflowInstance pour le contrôle explicite sur l'exécution d'une instance de workflow unique et WorkflowServiceHost pour des interactions basées sur des messages dans les scénarios à plusieurs instances. Comme les étapes du flux de travail sont définies comme une hiérarchie d'activités, l'activité supérieure de la hiérarchie peut être désignée pour définir le flux de travail lui-même. Ce modèle de hiérarchie remplace les classes SequentialWorkflow et StateMachineWorkflow explicites des versions précédentes. Les activités elles-mêmes peuvent être développées comme des collections d'autres activités (à l'aide de la classe Activity comme base, généralement définie en XAML). Sinon, elles peuvent être créées de façon personnalisée à l'aide de la classe CodeActivity qui peut utiliser le runtime d'accès aux données ou à l'aide de la classe NativeActivity qui montre la portée de l'exécution du workflow à l'auteur de l'activité. Les activités développées à l'aide des classes CodeActivity et NativeActivity sont créées à l'aide de langages compatibles avec le CLR comme C#.

Modèle de données des activités

Les activités stockent et partagent des données à l'aide des types indiqués dans le tableau suivant :

Variable

Stocke des données dans une activité.

Argument

Déplace les données vers l'intérieur et l'extérieur d'une activité.

Expression

Activité ayant une valeur de retour élevée utilisée dans les liaisons d'arguments.

Exécution du workflow

L'exécution du workflow est l'environnement d'exécution des flux de travail. L'objet WorkflowInvoker est la façon la plus simple d'exécuter un flux de travail. L'hôte utilise l'objet WorkflowInvoker pour les actions suivantes :

  • appeler un flux de travail de façon synchrone ;

  • fournir l'entrée à un flux de travail ou en extraire des sorties ;

  • ajouter des extensions à utiliser par les activités.

ActivityInstance est le proxy thread-safe que les hôtes peuvent utiliser pour interagir avec le runtime. L'hôte utilise l'objet ActivityInstance pour les actions suivantes :

  • acquérir une instance en la créant ou en la chargeant à partir d'un magasin d'instances ;

  • être informé des événements du cycle de vie de l'instance ;

  • contrôler l'exécution du workflow ;

  • fournir l'entrée à un flux de travail ou en extraire des sorties ;

  • signaler une continuation de flux de travail et passer des valeurs dans le flux de travail ;

  • rendre persistantes les données du workflow ;

  • ajouter des extensions à utiliser par les activités.

Les éléments de workflow accèdent à l'environnement d'exécution du workflow à l'aide de la classe ActivityExecutionContext. Ils utilisent celle-ci pour la résolution d'arguments et de variables, la planification d'activités enfants et de nombreuses autres fins.

Services

Les flux de travail offrent une façon naturelle d'implémenter les services Windows Communication Foundation (WCF) et d'y accéder, à l'aide d'activités de messagerie. Les services de workflow sont hébergés dans l'objet WorkflowServiceHost.

Persistance, déchargement et workflows de longue durée

Windows Workflow simplifie la création de programmes réactifs de longue durée en fournissant les éléments suivants :

  • activités qui accèdent à l'entrée externe ;

  • capacité à créer des objets Bookmark qui peuvent être repris par un écouteur hôte ;

  • capacité à rendre persistantes les données d'un workflow et de décharger le flux de travail, puis de le recharger et de le réactiver en réponse à la reprise d'objets Bookmark dans un flux de travail particulier.

Un flux de travail exécute en continu des activités jusqu'à ce qu'il n'y en ait plus à exécuter ou jusqu'à ce que toutes les activités en cours d'exécution soient en attente de réponse. Dans ce dernier cas, le flux de travail est inactif. Il est courant qu'un hôte décharge des flux de travail devenus inactifs et les recharge lorsqu'un message arrive pour continuer l'exécution. L'objet WorkflowServiceHost fournit les fonctionnalités pour cette fonction, ainsi qu'une stratégie de déchargement extensible. Pour les blocs d'exécution utilisant un état volatil ou des données qui ne peuvent pas être rendues persistantes autrement, une activité peut indiquer à un hôte qu'il ne doit pas être rendu persistant à l'aide de l'objet ActivityExecutionContext. Un flux de travail peut également rendre explicitement ses données persistantes sur un support de stockage durable à l'aide de l'activité Persist.