Question

associés à cette href="https://stackoverflow.com/questions/2064518/loading-persisted-workflow-after-workflowdefinition-has-changed-in-wf4"> question.

Je comprends comment implémenter versioning des flux de travail en utilisant WorkflowApplication . Si vous gardez la définition XAML d'origine pour les anciennes versions de votre flux de travail autour, vous pouvez les charger en utilisant le constructeur droit WorkflowApplication.

Comment pouvez-vous assurer que l'utilisation WorkflowServiceHost la définition de workflow correcte lorsque vous souhaitez héberger vos flux de travail dans IIS?

Il est un constructeur de WorkflowServiceHost que vous pouvez utiliser pour charger une définition de flux de travail, mais lorsque vous hébergez IIS intérieur à travers un fichier XAMLX, vous ne l'appelez pas vous WorkflowServiceHost, cela est géré en quelque sorte par IIS. Alors, comment puis-je assurer que la définition de flux de travail correct est chargé pour la bonne version de mon flux de travail?

Était-ce utile?

La solution

L'approche à l'aide du WorkflowServiceHost est pas si différent en utilisant un formulaire WorkflowApplication. Les bases de garder les différentes versions XAML (X) autour applique encore. Ainsi, dans le cas du WorkflowServiceHost vous devez créer plusieurs chaque hébergement une version différente de WorkflowServiceHost de votre XAMLX. Chacun avec un point final différent. Donc, fondamentalement, un point final en deux adresses un service de flux de travail et sa version.

Alors, comment obtenir les messages du client au WorkflowServiceHost correcte? Ici, le service de routage WCF est votre ami. Au lieu d'avoir le client de communiquer directement avec votre WorkflowServiceHost ils utilisent un service WCF routage intermédiaire. Cela les au WorkflowServiceHost à son tour vérifie les messages et les itinéraires hébergeant le fichier XAMLX approprié. Alors, comment faut-il savoir. Il y a plusieurs façons de le faire. Par exemple faire une recherche de base de données en utilisant un message identifiant de corrélation avec les demandes de nouveaux flux de travail qui vont toujours à la dernière version. La façon la plus simple est d'avoir le service de workflow retourne un numéro de version dans le cadre de la demande initiale et en font une partie nécessaire de chaque demande ultérieure. De cette façon, le service de routage WCF peut faire toutes ses œuvres avec juste l'envoi de données de message.

Un exemple de ceci serait:

  1. Le client envoie un message à partir d'un nouveau flux de travail utilisant l'ordre Id 7 et reçoit la version 3 de retour. L'application client utilise URL httl: //localhost/MyWorkflow.xaml et les attaquants de service de routage httl. //Localhost/MyWorkflow.v3.xamlx qui est la dernière version
  2. Message suivant envoie au flux de travail contient à la fois orderid et la version 3. L'application client utilise URL httl: //localhost/MyWorkflow.xaml et les attaquants de service de routage à httl: //localhost/MyWorkflow.v3.xamlx qui est la version indiquée.
  3. L'application client veut envoyer un message à un flux de travail plus. Il utilise orderid 2 et la version 1 (répondu quand ce flux de travail a été lancé). L'application client utilise URL httl: //localhost/MyWorkflow.xaml et les attaquants de service de routage httl. //Localhost/MyWorkflow.v1.xamlx qui est la version ci-dessous indiquée

Vérifier ces screencasts pour plus d'informations sur le service de routage WCF.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top