Récupérer une instance de Workflow lors de l’utilisation des Webservices auto générés
Windows Workflow Foundation offre la possibilité d’exposer directement un workflow
via des services Web. Le problème avec cette génération automatique est qu’elle
ne permet pas intuitivement une maîtrise totale des vos instances de Workflow, l’identifiant
de l’instance n’étant pas spécifié lors des appels aux diverses WebMethods.
Pour travailler sur l’instance souhaitée, lors de l’appel à votre WebMethod, il
faut donc spécifier un cookie contenant l’instance ciblée. Les Webservices auto
générés s’occupent ensuite de récupérer cette instance, en mémoire ou dans le service
de persistance en fonction de votre configuration.
Par exemple, si votre contrat de communication contient une méthode « Validation
», acceptant ou refusant une action en fonction d’un boolean et que instanceID représente
le Guid identifiant une instance de workflow active:
WFWebservice.Workflow1_WebService ws = new WindowsApplication1.WFWebservice.Workflow1_WebService();
ws.CookieContainer = new System.Net.CookieContainer();
ws.CookieContainer.Add(new System.Net.Cookie("WF_WorkflowInstanceId", instanceID,
"/", "localhost"));
ws.Validation(true);