2010-03-26 3 views
4

Je travaille avec la version finale de Visual Studio 2010 en utilisant Wf4 pour écrire un nouveau flux de travail pour l'approbation des demandes de ressources. Dans mon flux de travail, je voudrais qu'une demande expire après quelques jours si aucune approbation n'a été faite pour la demande. Nous l'avons fait dans WF 3.5 (Visual Studio 2008) en ajoutant un timer Delay dans un EventDrivenActivity parallèle à l'EventDrivenActivity qui attendait un approbateur pour venir approuver la requête. Si le délai expirait avant qu'une approbation ne soit faite, EventDrivenActivity mettrait fin à la demande. Est-ce que quelqu'un sait s'il existe un mécanisme similaire pour faire cela dans WF4?Retard Windows Workflow Foundation 4 (WF4)

Répondre

5

Dans WF4, ceci est fait de la même manière en utilisant une activité Pick. Un Pick a plusieurs enfants PickBranch, chacun avec un Trigger et une Action. Le déclencheur pour chacun est exécuté et contiendra le délai, recevoir ou tout ce que vous attendez. L'Action contient tout ce qui doit être exécuté. Seule l'action associée au premier déclencheur à exécuter est exécutée, les autres déclencheurs seront annulés et les autres actions ignorées.

+0

Maurice, Merci pour le post! J'ai changé mon flux de travail pour inclure une activité Pick avec 2 branches, dont l'une est le délai avec un TimeSpan.FromSeconds (30), mais après 30 secondes rien ne se passe. Ai-je besoin d'héberger mon workflow avec WorkflowServiceHost pour que cela fonctionne? J'essaye d'héberger le workflow avec WorkflowApplication. –

+0

Maurice, Je viens de mettre en place un projet de test Workflow Console avec une activité de sélection et 2 branches, dont l'une avait un court délai et une activité WriteLine pour écrire un message. Cela a fonctionné, comme vous l'avez dit, mais je pense que cela a fonctionné parce que mon application de console d'hébergement fonctionnait toujours. Ma vraie application est une application ASP.Net MVC, et elle génère mon Workflow (avec le retard dans la branche de l'activité de choix), puis l'application d'hébergement est terminée et se termine. Est-ce ce qui cause des problèmes, et y a-t-il un moyen d'utiliser la fonction pick/branch/delay dans un workflow hébergé par une application web? –

+0

Que faîtes-vous pour héberger le flux de travail? Dans le cas d'une WorkflowApplication, vous êtes chargé de recharger un workflow une fois qu'il a été déchargé. Si vous utilisez un WorkflowServiceHost, il rechargera les workflows à partir du magasin de persitence. Je suggère d'utiliser ce dernier et utiliser WCF pour envoyer des messages de votre application ASP.NET MVC au service de flux de travail. – Maurice

Questions connexes