[PDC2010] Retour vers le future… de Workflow Foundation
Passé l’excitation de la session « Workflow Foundation Futures » de la PDC 2010, j’ai fureté un peu ici et là sur le web afin de connaitre les réactions de chacun... A ma grande surprise, cette session n’a pas été beaucoup commentée.
Son contenu étant vraiment intéressant, il est temps pour moi de changer un peu les choses en lui rendant justice.
Accrochez-vous, dans WF v Next, il va y avoir de la nouveauté, de la vrai !
À partir du PowerPoint de Ron Jacobs, j’ai extrait quelques slides, dont celui-ci :
Malheureusement, tous ces points n’ont pas été abordés lors des démos, mais on peut tout retenir les nouveautés suivantes :
State Machine (la machine à état arrive enfin tout intégrée, Yes !!!)
Workflow Founsation va enfin intégrer de base les workflows à état. Il s’agit d’une fonctionnalité très demandée et qui ressemble beacoup à la CTP StateMachine sur CodePlex (donc sur une base proche du FlowChart). Si on compare à WF3, tout y est avec une lisibilité plus claire du fait du nouveau Designer.
Oui, le plus es au niveau du designer qui est très sympathique, surtout quand on découvre que les liens entre activités se font presque tout seuls. Il faut le voir pour se rendre compte de la grande avancée à ce niveau. Aucune explication ne peut vraiment rendre justice à cette fonctionnalité qui fera les beaux jours des futurs FlowChart et StateMachines.
- C# Expressions
Lors de sa démonstration, Ron nous a fait une petite blague avec un « faux bug » lors de la concaténation de strings via « & » dans un projet C#. En ajoutant bien entendu que « this is a really different expression»… en enfonçant un peu plus le clou en tapant le fameux « this. » en lieu et place du « Me. » de Vb.
Maintenant un développeur C# aura des expressions en C# dans un projet C# et un développeur Vb aura des expressions Vb dans un projet Vb.
New Activities Database, SendMail, REST Client, …
Rien de bien transcendant n’a été présenté sur cette partie (pour le moment). Mais on a put voir des activités simples et pratiques. Tout ce que l’on demande à un workflow :
Le MultiAssign qui permet de prendre une variable (donc une instance d’un objet) et de modifier plusieurs de ses propriétés en une opération (snif, je travaillais déjà sur une activité custom pour ça… je peux ranger mon travail aux oubliettes)
Une petite série de trois activité dédiée à SQL. Celle-ci intégre nottemment une boucle sur les enregistrements retournées lors d’une requête. L’intégration de SQL promet donc d’être très facile.
Rien n’a été présenté en ce qui concerne Entity Framework ou Linq, mais cela ne veut pas dire qu’il n’y a rien à présager de ce côté.
Un SendMail bien pratique qui devra en ravir plus d’un.
Et plusieurs activités pour REST avec des activités HttpGet, HttpPost, HttpPut, HttpDelete (le tout en asynchrone, donc exploitable dans une activité Parallel).
Enhanced Workflow Designer
Une attention toute particulière a été apportée au Designer avec plusieurs points que l'on aurait aimé avoir dans l'actuel WF4. Rien n’a été dit concernant les performances, mais on peut déjà lister les points suivants :
· Liste d’erreurs
Lors d’une compilation, les validations des workflows sont visibles dans la fenêtre des erreurs. Et oui, aujourd’hui dans WF4, il y a des erreurs de validation qui ne sont pas visibles.
· Annotations (sous une forme similaire aux post-its)
En mode design, on peut a enfin mettre des commentaires sur ses activités. Avec bien entendu, les petites commandes bien appréciables comme : afficher ou masquer toutes les annotations.
La possibilité de voir les annotations au passage de la souris.
Mais aussi la possibilité d’intégrer l’annotation, telle un texte constamment affiché dans l’activité (il faudra voir ce que ceci induit comme travail sur nos ActivityDesigners).
· La recherche de texte
Le bon ami Ctrl+F peut enfin être utilisé avec les Workflows en Xaml. Si on fait une recherche et que celle-ci liste des éléments d’un workflow, un double click sur l’élément ouvrira le workflow en question à l’endroit désiré (fini les recherches à la main dans le Xaml)
WCF Workflow Service Improvements, Contract First (très attendu)
L’arrivée du « Contract First » et donc la possibilité de créer un contrat pour WCF et l’implémenter dans son workflow. La mise en place est très simple.
- L’importation du contrat dans le projet du service de workflow permet la création d’activités (template Receive + SendReply) spécifiques
- Utiliser les activités dans son Workflow
- . … euh… en fait l’opération est tellemnt simple qu’il n’a a pas de petit 3
Comme le dit Ron Jacobs, l’expérience utilisateur peut être amenée à changer. En l’état actuel, ce procédé semble pratique et efficace, mais le workflow n’est pas contraint à respecter le contrat.
On peut noter lors de la présentation que ceux-ci privilégient la section Parameter à Message pour le passage d’argument des activités Receive. Ceci n’est pas un hasard, il s’agit du meilleur moyen pour qu’un service WF ce substitut en toute transparence à un service WCF classique.
Mais la partie très attendue de cette session concerne le versioning et ça gestion dans le cas d’instance de workflow persistées.
Versioning
Avec l’arrivée d’une nouvelle notion : l’identité (WorkflowIndentity). Cette nouvelle notion permet de résoudre le fameux souci de la mise en persistance d’une instance de workflow ayant une définition et la restauration de cette instance avec un définition de workflow différente (ex : cas d’une mise à jour des définitions de workflows). On pourra enfin savoir si une instance de workflow correspond à la définition que l’on veut utiliser et donc jouer avec de multiples définitions (à condition de toutes les conserver).
Dynamic Update
La mise à jour dynamique sert dans les cas où une définition a été mise à jour pour corriger un bug. Dans ce cas, les instances de workflow persistées doivent être mises à jour pour utiliser la nouvelle définition.
La mise à jour dynamique s’appuie sur les identités des définitions de workflows pour déterminer une carte des mises à appliquer (UpdateMap). Une fois cette carte établie, on peut mettre à jour les instances de workflows pour qu’elles utilisent la nouvelle définition.
Malheureusement aucun contenu n’a été présenté pour les points suivants : Security et Partial Trust
Plus…
Ron Jacobs nous a un peu parlé de l’Azure AppFabric et de l’intégration d’une intégration WF similaire à ce que l’on connait dans Windows AppFabirc et son tracking. Maisil faudra attendre 2011 pour en savoir un peu plus. Mais Workflow Foundation aura sont rôle à jouer, c’est enfin une certitude!
La team Workflow Foundation nous réserve donc encore quelques surprises. Et après ce bref aperçu, je pense que la prochaine version devrait faire tomber les barrières qui freinent l’adoption des WF et barrer la route aux mauvaises langues ;)