2010-04-01 4 views
2

J'ai deux méthodes sur un service de workflow hébergé dans WorkflowServiceHost. La première méthode est appelée et lance la séquence de flux de travail habituelle: conversation avec d'autres services Web, travail de base de données, etc. mais à certaines occasions, elle s'arrête et persiste en db (comme dans l'activité de délai). avoir lieu avant de continuer.Workflow Foundation 4 WorkflowServiceHost Corrélation de messages

J'ai besoin de ma deuxième méthode pour être en mesure de me connecter à ce flux de travail persistant, de changer une variable locale puis de poursuivre le traitement. J'ai examiné la corrélation basée sur les messages dans le workflow, mais je ne trouve que des exemples où une sorte de boucle while infinie maintient l'instance de workflow active pour que le second appel de méthode de service arrive quand il est encore en cours. Étant donné que mon instance de flux de travail sera retardée/persistante, le deuxième appel de service ne semble pas aller nulle part (je ne peux pas avoir une boucle infinie en maintenant l'instance de flux de travail active). J'espère que cela a du sens - bravo!

Répondre

1

Avez-vous essayé de rencontrer des problèmes ici? Et si oui, que se passe-t-il ou quelles erreurs voyez-vous?

La raison pour laquelle je demande est ceci devrait juste fonctionner. WorkflowServiceHost reçoit le message, charge le flux de travail à partir du magasin de persistance si nécessaire et reprend le signet dans le flux de travail (une activité de réception a utilisé des signets sous les couvertures).

+0

Bien qu'aucune exception ne soit levée, le second appel de service ne semble rien faire. Je m'attendais à ce que la variable locale change et soit sortie dans la fenêtre de la console mais rien ne se passe du tout. Il semble que, parce que le premier appel de méthode a déclenché une activité de retard, rien ne va passer! Puis-je vous envoyer par e-mail mon application de démo à votre adresse e-mail de résolution de problème s'il vous plaît Maurice? À votre santé! – Lygpt

0

Assurez-vous que CanCreateInstance n'est pas défini sur True pour votre deuxième appel de service et que la corrélation est correctement configurée. Comme l'autre affiche mentionné, cela ne devrait pas poser de problèmes.

1

Vous auriez besoin de mettre votre activité de retard dans un PickBranch à côté de votre deuxième activité de réception si vous vouliez que la réception puisse ursurp le délai de finition. Comme vous l'avez expliqué maintenant, l'activité Retard empêche le flux de travail de progresser au point où votre activité de réception a enregistré son signet.

Questions connexes