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

Nombre de vue : 948

COMMENTAIRES 3 commentaires

  1. nicolas.kp dit :

    Bien fait… Dans ma mission j’essayerai de les convaincre de remplacer la vieille jBPM mal utilisée (une vraie usine à gaz) par WF4…

  2. Je suis déçu par cet article…

    Encore une fois, je constate que l’on parle de Workflow Foundation sans trop maitriser le sujet (même l’historique contient des inexactitudes). SVP, documentez vous un peu plus car cela ne fait pas sérieux 🙁

    WF contient de gros avantages comme la corrélation et le versioning… choses impossible à réaliser avec .net sans réinventer la roue.

    A titre d’information, voici une liste non exhaustives des amélioration de WF4.5.

    http://msdn.microsoft.com/fr-fr/vstudio/hh968987

  3. Vincent Uribe dit :

    Bonjour Jeremy,

    En effet, comme le dis cet article, WF est un outil particulièrement puissant et qui, au fil du temps, s’est beaucoup amélioré. L’une d’elle est en effet la corrélation, soit basée sur le contexte soit basée sur le contenu (cette dernière étant à mon sens plus complexe).
    Concernant le versioning, que je n’ai exploré que pour le framework 4.0, l’impossibilité de charger des instances de workflow ultérieures à une modification de ce dernier représente un obstacle majeur. Pour ma part, je n’ai pu qu’utiliser des paramètres au sein des objets métiers qui permettrait un “versionnement” du workflow (dans ce cas un flux d’approbation composé de N étapes).
    Depuis la parution de l’article je n’ai pas eu l’occasion de tester en profondeur la version 4.5, raison pour laquelle l’article ne fait que proposer une liste non exhaustive des améliorations.
    Je te remercie de ton retour et pour le lien vers ton article.

AJOUTER UN COMMENTAIRE