2012-03-28 5 views
0

Angenommen, es gibt einen Workflow-Service A. WF A kann mehr als eine Instanz haben (mit CanCreateInstance). Angenommen, es gibt WF B, das (inhaltlich) anders ist, aber dieselben Eigenschaften wie WF A. Damit WF A fertig ist, muss es WF-B n (dynamisch bestimmt) mal aufrufen (jedes Mal natürlich mit anderen Argumenten).Workflow 4 Service zum parallelen Erstellen (Senden und Empfangen) mehrerer Workflow-Services

Pseudo-Workflow könnte sein:

Instance of WF-A: 
    // WF is instantiated 
    // do some activities 
    parallel-foreach (product in Products) 
     Send & Receive to a different instance of WF-B with parameter product 
    // do some activities 
    // WF-A is done 

Die einzige Frage ist: Wie setzen Sie ein solches Schema?

+0

Ist WF A die gleiche Instanz von WF Aufruf Strandzeit? – scmccart

Antwort

0

Es gibt einige Dinge zu beachten;

Es gibt zwei Möglichkeiten, einen Dienst innerhalb einer WF aufzurufen.

  • Ein Weg ist mit Senden-Receive-Aktivitäten Stil Messaging, in dem man die Adresse des Dienstes (oder Konfiguration Endpunkt) sowie Methodennamen (einschließlich ihrer Namen) & Argumente angeben muss.
  • Die andere Möglichkeit besteht darin, eine Service-Referenz zu verwenden. Wenn Sie eine solche Referenz verwenden, erstellt Visual Studio für jede Servicemethode eine dedizierte Aktivität. Dieser Weg scheint ein nativer Weg zu sein und verwendet eine WF-Aktivitätsabstraktion (so wenn möglich!).

Beachten Sie, dass die .XAMLX Datei, die deklarativ den WF-Dienst repräsentiert, zu der Dienst Referenzaktivität zeigen wird, welche schließlich in der DLL des Projektes gebündelt, die XAMLX in residiert.

Hinweis Auch, dass die generierte Service-Referenzaktivität auf eine WCF-Konfigurations-Client-Bindung verweist. Seit WF-A ist ein Kunde von WF-B.

Daher könnten Sie Folgendes tun:

  1. Tu, was du in WF-A wollen - nur mit WF-B verwenden, indem die Servicereferenzaktivität verwendet wird.

  2. Der Host von WF-A sollte eine Bezugnahme auf die Anordnung hat, in der WF-A.XAMLX befindet (was bedeutet, dass der Host die WF-B-Aktivität von seiner Service-Referenz haben wird). Das bedeutet, dass XamlX allein nicht genug für den Host ist.

  3. In einer Dienst-Referenz (mit dem gleichen Namensraum wie in WF-A-Baugruppe verwendet wird) zu WF-B in dem Host von WF-A, die Client-Konfiguration des Host ändern, indem die führenden Namensräume in den Entfernungs Clientabschnitt im Vertragsnamen (IServiceB statt ServiceReference.IServiceB)

Der letzte Schritt bei der Konfiguration der Client-Bindungen werden könnte ersetzt von selbst, aber es ist viel einfacher, einen Dienstverweis verwenden (die Sie auch aktualisieren können)

0

Nicht sicher, was Sie fragen - Sie sollten eine Sequenzaktivität in eine ParallelForEach-Aktivität einfügen und Sende- und Empfangsaktivitäten innerhalb der Sequenz einfügen können.

Hier ist ein Beispiel dafür, wie ParallelForEach verwenden:

http://msdn.microsoft.com/en-us/library/dd647810.aspx

Verwandte Themen