1

équipe:Invoke, flux de travail des enfants de manière asynchrone

je dois appeler une activité WF (XAML) d'un service WF (XAMLX) de manière asynchrone. Je référence déjà le framework Microsoft.Activities.Extensions et je cours sur Platform Update 1 pour la machine à états - donc si la solution est déjà dans l'une de ces bibliothèques, je suis prêt!

Maintenant, j'ai besoin d'appeler cette activité (XAML) de manière asynchrone - mais il a un paramètre de sortie qui doit définir une variable dans le service (XAMLX). Quelqu'un peut-il me fournir une solution?

Merci!


* MISE À JOUR *

Maintenant, je peux envoyer des photos, * * Je pense, parce que j'ai réputation assez! Laissez-moi en mettre quelques-uns ici et essayer de mieux expliquer mon problème. La première image est le service WF qui a les deux points d'entrée pour le flux de travail - le second est le flux de travail lui-même. Ce workflow est un mécanisme d'orchestration qui redémarre en permanence et dispose de mécanismes de basculement (par exemple, exit sur seuil d'erreur et sortie logicielle) pour gérer notre file d'attente de transactions durables en utilisant WF! Maintenant, ce workflow fonctionnait parfaitement quand il s'agissait d'un seul service WF, car nous pouvions appeler le service, obtenir une réponse et renvoyer la valeur de cette réponse dans un autre point d'entrée dans un déclencheur pour émettre une sortie en douceur. . Cependant, une nouvelle exigence nous a demandé de faire du workflow lui-même une activité WF dans un autre projet et d'avoir les séquences Receive/Send-Reply dans le projet d'application de service WF. Cependant, nous devons être en mesure de démarrer ce flux de travail et de l'oublier, puis de le faire savoir qu'une sortie douce est nécessaire plus tard, mais comme WF s'exécute sur un seul thread, cela devient un peu difficile au mieux.

WF Service Sequence

WF Activity Sequence

Répondre

2

strictement parler dans les activités XAML parallèle et sont ParallelForEach comment vous effectuez asynchronisme. Le planificateur de flux de travail n'utilise qu'un seul thread (un peu comme l'interface utilisateur). Par conséquent, toute activité en cours s'exécute généralement sur le même thread, sauf s'il implémente AsyncCodeActivity, auquel cas vous renvoyez simplement le thread du planificateur au serveur. runtime en attendant un rappel de n'importe quel code asynchrone que votre implémentation AsyncCodeActivity appelle.

Par conséquent êtes-vous sûr que c'est ce que vous voulez réaliser? Voulez-vous dire que vous voulez l'exécuter après avoir envoyé votre réponse initiale? Dans ce cas, placez votre activité après la réponse Envoyer.

S'il vous plaît fournir plus d'informations si ces suggestions ne répondent pas à votre question./

Mise à jour: L'exigence initiale posé (séparant la mise en œuvre du service de réception/Envoyer activités) peuvent effectivement être résolus en accueillant la cible l'activité en tant que service.Voir le lien suivant http://blog.petegoo.com/index.php/2011/09/02/building-an-enterprise-workflow-system-with-wf4/

+0

Nous avons une exigence qui nous oblige à placer tous nos messages (Receive/Send-Reply) dans un projet, puis le flux réel pour ces messages dans les activités XAML dans un autre projet. Donc, ce que je dois faire est de générer cette activité XAML entre les activités Receive/Send-Reply, lui permettre de définir son paramètre de sortie qui est un objet état (me permet de communiquer avec lui plus tard) et retourner à l'expéditeur. –

+2

Ne pense pas que ce sera possible. Si vous utilisez un parallèle, votre activité xaml peut utiliser un argument InOut et le paramétrer affecte la variable liée dans le flux de travail parent, mais vous n'avez aucun moyen de reprendre le contrôle du flux de travail. Même si votre branach parallèle était dans une boucle, vous seriez inutilement en train de tourner pour attendre que la variable soit réglée. Pouvez-vous graver l'objet état/corrélation du workflow? –

+0

OK - alors laissez-moi poser cette question. Serait-il possible d'exposer un service Web pour lancer l'autre flux de travail, mais placez cette instance sur le même hôte que le service WF qui a démarré le processus? –

Questions connexes