Accueil Nos publications Blog Pourquoi utiliser Workflow Foundation ?

Pourquoi utiliser Workflow Foundation ?

 

L’arrivée prochaine du framework 4.5 est l’occasion de parler de Windows Workflow Foundation, ou WF pour les intimes (pour ne pas le confondre avec  la WWF). C’est en effet l’une des API .Net les moins connues et les moins utilisées.

Qu’est-ce que WF ?

WF est un outil permettant la gestion de flux. Bien sûr ça ne nous avance pas beaucoup… Dans la plupart des applications développées aujourd’hui, il existe la notion de flux. Le flux est la succession d’étapes nécessaires pour représenter un processus.
Généralement, une application répond à une ou plusieurs problématiques en implémentant un nombre égal ou supérieur de processus. Chaque étape de ces processus est traduite par une ou plusieurs méthodes ou activités contenant la logique nécessaire à l’accomplissement d’une tache donnée. Enfin, on met tout ça dans le bon ordre et voilà, les problématiques sont résolues !
Une activité est donc un morceau de logique métier, l’une des étapes du processus. Donc, WF est un outil pour le développeur qui se charge de l’organisation des activités au sein d’un flux.

Comment WF organise-t-il les activités?

Le designer

La principale caractéristique et le principal intérêt de WF vient de son designer. Totalement intégré à Visual Studio, il permet d’une manière totalement graphique de créer et d’organiser les différents flux.

La figure ci-dessus montre une machine à états représentant le processus d’un distributeur de billets. On y voit très clairement chaque étape et chaque transition. A noter que les transitions peuvent être conditionnelles ou non, donnant une très grande liberté dans le design des flux.

La figure ci-dessus montre en détail l’activité Initialize de la machine à états précédente avec à l’intérieur d’autres activités et les différentes transitions.

La représentation graphique du flux se fait en XAML, ce qui permet accessoirement de montrer le flux dans une application WPF ou Silverlight. On peut également exporter le flux en tant qu’image pour agrémenter la documentation !

Persistance

L’un des grands avantages de WF vient de sa persistance. En effet on peut stocker chaque instance de WF dans la base de données. Microsoft met à disposition avec le framework .Net les scripts de création et d’utilisation des bases de données nécessaires à la persistance des flux. A noter que la persistance n’est pas obligatoire pour utiliser WF mais préférable pour en tirer profit au maximum.

Un peu d’histoire

Framework 3.0

WF 3 gère deux modèles : séquentiel et machine à états. Visual Basic est utilisé pour décrire le code au sein des activités, bien que celles-ci puissent être développées en C# également. SharePoint 2007 utilise WF 3.0 pour la gestion des flux.

Framework 3.5

WF 3.5 s’intègre avec Windows Communication Foundation via la nouvelle activité ReceiveActivity. SharePoint 2010 utilise WF 3.5 pour la gestion des flux.

Framework 4.0

WF 4 a très peu en commun avec la version 3.5. En effet Microsoft refond totalement son outil et y ajoute de nombreuses fonctionnalités telles que DataContractResolver pour WCF et le modèle Flowchart. On déplore notamment la disparition du modèle StateMachine.
L’activité Interop permet l’utilisation d’activités développées avec d’anciennes versions du framework.

Framework 4.0.1 et 4.0.2

Grâce à la SP1 de Visual Studio 2010 et les mises-à-jour du framework 4.0, le modèle StateMachine revient, augmentant de beaucoup l’utilisabilité de l’outil.

Framework 4.5

La version 4.5 de WF permettra d’utiliser C# au lieu de VB au sein du designer, détail qui a longtemps dérangé les développeurs C#. Cette nouvelle version devrait également apporter un support natif du modèle StateMachine et apporter une vue Document Outline pour représenter le flux sous forme d’arbre.

Concrètement, je l’utilise où ?

Il est plus pertinent de demander quand utiliser WF plutôt qu’où, pour la simple raison qu’on peut utiliser un outil n’importe où, mais pas n’importe quand !

Voici quelques cas où il est possible d’utiliser WF :

  • Les règles métiers de mon application varient régulièrement. Par exemple lors de calculs de prix de certains produits ;
  • Mon application contient des flux d’approbation qui peuvent varier, notamment au niveau du nombre d’étapes de ce flux ;
  • Mon flux requiert plusieurs entrées d’information qui peuvent arriver à des intervalles plus ou moins écartés. Par exemple, un flux d’approbation dont les approbateurs peuvent mettre entre 5 minutes et 5 jours avant de remplir leur tâche ;
  • Mon application doit consulter d’autres SI ou d’autres services Web, comme le fait BizTalk ;
  • Mon application possède un flux complexe dont le résultat est fortement variable selon le contexte.

Donc…

Le designer de WF permettra une compréhension rapide des flux représentés et son intégration avec WCF assurera une organisation pratique des tâches à exécuter.

L’une des principales raisons pour laquelle WF est si peu utilisé est qu’il est difficile de visualiser où son utilisation serait utile. C’est avant tout un outil, libre à vous de l’utiliser ou non, c’est à vous d’évaluer s’il sera un plus dans votre application !

Quelques liens

Si vous voulez en savoir plus sur WF, je vous conseille ces quelques liens et de consulter régulièrement le blog de Ron Jacobs