Partager via


Concepts fondamentaux du flux de travail Windows

Le développement de flux de travail dans .NET Framework 4.6.1 utilise des concepts qui peuvent être nouveaux pour certains développeurs. Cette rubrique décrit certains des concepts et 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élisent 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 WorkflowInvoker de l’appel d’un flux de travail comme s’il s’agissait d’une méthode, WorkflowApplication pour un contrôle explicite sur l’exécution d’une instance de flux de travail unique et WorkflowServiceHost pour les interactions basées sur les messages dans des scénarios multi-instances. Étant donné que les étapes du flux de travail sont définies comme une hiérarchie d’activités, l’activité la plus haute de la hiérarchie peut être dite pour définir le flux de travail lui-même. Ce modèle hiérarchique remplace les classes explicites SequentialWorkflow et StateMachineWorkflow des versions précédentes. Les activités elles-mêmes sont développées en tant que collections d’autres activités (à l’aide de la Activity classe en tant que base, généralement définie à l’aide de XAML) ou sont personnalisées à l’aide de la CodeActivity classe, qui peut utiliser le runtime pour l’accès aux données, ou à l’aide de la NativeActivity classe, qui expose l’étendue du runtime de workflow à l’auteur d’activité. Les activités développées à l’aide de CodeActivity et NativeActivity sont créées à l’aide de langages compatibles CLR tels que C#.

Modèle de données d’activité

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

Catégorie Descriptif
Variable Stocke des données dans une activité.
Raisonnement Déplace les données vers et hors d’une activité.
L'Expression Activité avec une valeur de retour élevée utilisée dans les liaisons d’arguments.

Exécution du workflow

Le runtime de flux de travail est l’environnement dans lequel les flux de travail s’exécutent. WorkflowInvoker est le moyen le plus simple d’exécuter un flux de travail. L’hôte utilise WorkflowInvoker pour ce qui suit :

  • Pour appeler de façon synchrone un flux de travail.

  • Pour fournir une entrée ou récupérer la sortie d’un flux de travail.

  • 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 ActivityInstance pour ce qui suit :

  • Pour 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 ;

  • Pour contrôler l’exécution du flux de travail.

  • Pour fournir une entrée ou récupérer la sortie d’un flux de travail.

  • Pour signaler une continuation de flux de travail et transmettre des valeurs dans le flux de travail.

  • Pour conserver les données de flux de travail.

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

Les activités accèdent à l’environnement d’exécution de workflow à l’aide de la classe dérivée appropriée ActivityContext , telle que NativeActivityContext ou CodeActivityContext. Ils l’utilisent pour résoudre des arguments et des variables, pour planifier des activités enfants et à de nombreuses autres fins.

Prestations

Les flux de travail offrent un moyen naturel d’implémenter et d’accéder à des services faiblement couplés, à l’aide d’activités de messagerie. Les activités de messagerie sont basées sur WCF et constituent le mécanisme principal utilisé pour introduire et extraire des données dans et hors d'un flux de travail. Vous pouvez composer des activités de messagerie ensemble pour modéliser n’importe quel type de modèle d’échange de messages souhaité. Pour plus d’informations, consultez Activités de messagerie. Les services de flux de travail sont hébergés à l’aide de la WorkflowServiceHost classe. Pour plus d’informations, consultez Vue d’ensemble des services de flux de travail d’hébergement. Pour plus d’informations sur les services de flux de travail, consultez Workflow Services

Persistance, déchargement et flux de travail Long-Running

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

  • Activités qui accèdent à une entrée externe.

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

  • Possibilité de conserver les données d’un flux de travail et de décharger le flux de travail, puis de recharger et réactiver le flux de travail en réponse à la reprise des Bookmark objets dans un flux de travail particulier.

Un flux de travail exécute en continu les activités jusqu’à ce qu’il n’y ait plus d’activités à exécuter ou tant que toutes les activités en cours d’exécution attendent l’entrée. Dans ce dernier état, le flux de travail est inactif. Il est courant pour un hôte de décharger les flux de travail qui ont été inactifs et de les recharger pour continuer l’exécution lorsqu’un message arrive. WorkflowServiceHost fournit les fonctionnalités pour cette fonction, ainsi qu'une stratégie de déchargement extensible. Pour les blocs d’exécution qui utilisent des données d’état volatiles ou d’autres données qui ne peuvent pas être conservées, une activité peut indiquer à un hôte qu’elle ne doit pas être conservée à l’aide du NoPersistHandle. Un flux de travail peut également conserver explicitement ses données dans un support de stockage durable à l’aide de l’activité Persist .