Frage

Ähnliche diese Frage .

Ich verstehe, wie die Versionierung von Workflows implementieren nofollow mit WorkflowApplication . Wenn Sie die ursprüngliche XAML-Definition für ältere Versionen des Workflows halten um, Sie können sie laden den richtigen WorkflowApplication Konstruktor.

Wie können Sie sicherstellen, dass WorkflowServiceHost Anwendungen die richtige Workflow-Definition, wenn Sie Ihre Arbeitsabläufe in IIS hosten möchten?

Es gibt einen WorkflowServiceHost Konstruktor, dass Sie eine Workflow-Definition laden können, aber wenn Sie sind in IIS durch eine XAMLX Datei-Hosting, Sie rufen Sie nicht WorkflowServiceHost selbst, das irgendwie von IIS behandelt wird. So, wie stelle ich sicher, dass die richtige Workflow-Definition für die richtige Version meines Workflow geladen wird?

War es hilfreich?

Lösung

Der Ansatz der Workflow Verwendung ist nicht alles, was andere Form eines Workflow verwenden. Die Grundlagen zu halten, die verschiedenen XAML (X) Versionen um immer noch gelten. So im Fall des Workflow müssen Sie mehrere Workflow sind jedes Hosting eine andere Version Ihrer XAMLX erstellen. Jedes mit einem anderen Endpunkt. Also im Grunde ein en Endpunkt beiden Adressen ein Workflow-Dienst und seine Version.

So, wie Nachrichten vom Client auf den richtigen Workflow zu bekommen? Hier wird der WCF-Routing-Service ist dein Freund. Statt Clienten kommunizieren direkt mit Ihrem Workflow sie verwenden, um einen Zwischen WCF-Routing-Service. Dies wiederum prüft die Meldungen und leitet sie an den Workflow Hosting die entsprechende XAMLX Datei. So wie weiß es. Es gibt mehrere Möglichkeiten, dies zu tun. Zum Beispiel macht eine Datenbank-Lookup eine Nachricht Korrelations-ID mit Anfragen für neue Workflows immer gehen in die letzte Version. Der einfachste Weg ist der Workflow Service hat eine Versionsnummer als Teil der ursprünglichen Anforderung zurückkehren und dies ein erforderliches Teil jeder nachfolgenden Anforderung machen. Auf diese Weise des WCF-Routing-Service alle seine Werke nur mit den Nachrichtendaten senden tun können.

Ein Beispiel hierfür wäre:

  1. senden Der Client eine Nachricht einen neuen Workflow-Startreihenfolge unter Verwendung von Id 7 und erhält Version 3 zurück. Die Client-Anwendung verwendet URL HTTL: //localhost/MyWorkflow.xaml und die Routing-Service nach vorn zu HTTL. //Localhost/MyWorkflow.v3.xamlx die die letzte Version ist
  2. Nächste Nachricht es an den Workflow sendet enthält sowohl orderid und Version 3. Die Client-Anwendung verwendet URL HTTL: //localhost/MyWorkflow.xaml und der Routing-Service nach vorn zu HTTL: //localhost/MyWorkflow.v3.xamlx das ist die angegebene Version.
  3. Die Client-Anwendung möchte eine Nachricht an einen älteren Workflow senden. Es verwendet orderid 2 und Version 1 (antwortete, wenn dieser Workflow gestartet wurde). Die Client-Anwendung verwendet URL HTTL: //localhost/MyWorkflow.xaml und der Routing-Service nach vorn zu HTTL. //Localhost/MyWorkflow.v1.xamlx das ist die Version incicated

Überprüfen Sie diese Screencasts für weitere Informationen über die WCF-Routing-Service.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top