[WF4] Ajouter une extension à un WS sans le recoder de A à Z!!!!

Publié le 12 juillet 2011 par Jeremy.jeanson

Quand on s’est habitué au WorkflowApplication, le WorkflowServiceHost, a souvent un petit côté “dépaysant” (pour rester polie).

…Oui je sais, le WorkflowServiceHost donne à certain on des envies de meurtres…

Le workflowServiceHost est là pour vous simplifier la vie, alors réfrénons nos ardeurs et revenons à un problème qui n’en est pas un : Ajouter une extension à un WorkflowServiceHost.

Si on fait un petit tour sur internet et la MSDN, on découvre que la collection Extensions du WorkflowServiceHost nous oblige à réécrire nos extensions, et dans certains cas, nos activités…

Pas de panique!!!! Ce n’est pas vrai!

Il m’a souvent été demandé pourquoi, alors je poste ce petit article pour faire le point sur une “erreur de compréhension” qui touche beaucoup d’utilisateurs. Le WorkflowServiceHost travail autant avec WF qu’avec WCF. Et la propriété Extensions que vous envisagiez d’utiliser n’est pas liée à WF mais à WCF. La vraie liste d’extensions destinées aux workflows exposés via WCF est WorkflowExtensions.

Il n’est donc pas utile de réécrire vos extensions. Il suffit juste d’utiliser la bonne propriété du WorkflowServiceHost

// Pour un WorkflowServiceHost dont le nom est _WorkflowServiceHost
_WorkflowServiceHost.WorkflowExtensions.Add(new MyExtension());

// Pour un WorkflowApplicationdont le nom est _WorkflowApplication
_WorkflowApplication.Extensions.Add(new MyExtension());