Vorgehensweise: Zugreifen auf einen Dienst aus einer Workflowanwendung
In diesem Thema wird beschrieben, wie Sie einen Workflowdienst in einer Workflowkonsolenanwendung aufrufen. Dies hängt vom Abschluss des Themas Vorgehensweise: Erstellen eines Workflowdiensts mit Messagingaktivitäten ab. Obwohl in diesem Thema beschrieben wird, wie Sie einen Workflowdienst aus einer Workflowanwendung aufrufen, können Sie die gleichen Methoden auch verwenden, um beliebige andere WCF-Dienste (Windows Communication Foundation) aus einer Workflowanwendung aufzurufen.
Erstellen eines Workflowkonsolen-Anwendungsprojekts
Starten Sie Visual Studio 2012.
Laden Sie das MyWFService-Projekt, das Sie im Thema Vorgehensweise: Erstellen eines Workflowdiensts mit Messagingaktivitäten erstellt haben.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe MyWFService, und wählen Sie dann Hinzufügen, Neues Projekt aus. Wählen Sie unter Installierte Vorlagen die Option Workflow und aus der Liste der Projekttypen die Option Konsolenanwendung für Workflows aus. Geben Sie dem Projekt den Namen "MyWFClient", und verwenden Sie wie in der folgenden Abbildung gezeigt den Standardspeicherort.
Klicken Sie auf die Schaltfläche OK, um das Dialogfeld Neues Projekt hinzufügen zu schließen.
Nachdem das Projekt erstellt wurde, wird die Datei "Workflow1.xaml" im Designer geöffnet. Klicken Sie auf die Registerkarte Toolbox, um die Toolbox zu öffnen, falls diese nicht bereits geöffnet ist. Klicken Sie anschließend auf das Pinsymbol, damit das Fenster geöffnet bleibt.
Drücken Sie STRG+F5, um den Dienst zu erstellen und zu starten. Wie zuvor auch, wird der ASP.NET Development Server gestartet, und der Browser zeigt die WCF-Hilfeseite an. Merken Sie sich den URI für diese Seite, da Sie diesen im nächsten Schritt verwenden.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt MyWFClient, und wählen Sie Hinzufügen>Dienstverweis aus. Klicken Sie auf die Schaltfläche Ermitteln, um die aktuelle Projektmappe nach Diensten zu durchsuchen. Klicken Sie in der Liste "Dienste" auf das Dreieck neben der Datei "Service1.xamlx". Klicken Sie auf das Dreieck neben "Service1", um die vom Dienst "Service1" implementierten Verträge aufzuführen. Erweitern Sie in der Liste Dienste den Knoten Service1. Der Echo-Vorgang wird wie in der folgenden Abbildung dargestellt in der Liste Vorgänge angezeigt.
Behalten Sie den Standardnamespace bei, und klicken Sie auf OK, um das Dialogfeld Dienstverweis hinzufügen zu schließen. Das folgende Dialogfeld wird angezeigt.
Klicken Sie auf OK, um das Dialogfeld zu schließen. Drücken Sie dann STRG+UMSCHALT+B, um die Projektmappe zu erstellen. Beachten Sie, dass der Toolbox ein neuer Abschnitt mit dem Namen MyWFClient.ServiceReference1.Activities hinzugefügt wurde. Erweitern Sie diesen Abschnitt, und beachten Sie die Echo-Aktivität, die wie in der folgenden Abbildung dargestellt hinzugefügt wurde.
Ziehen Sie eine Sequence-Aktivität auf die Designeroberfläche. Diese befindet sich in der Toolbox im Abschnitt Ablaufsteuerung.
Klicken Sie bei aktivierter Sequence-Aktivität auf den Link Variablen, und fügen Sie eine Zeichenfolgenvariable mit dem Namen
inString
hinzu. Weisen Sie der Variablen einen Standardwert von"Hello, world"
sowie eine Zeichenfolgenvariable namensoutString
zu, wie im folgenden Diagramm dargestellt.Ziehen Sie eine Echo-Aktivität auf das Sequence-Objekt. Binden Sie das
inMsg
-Argument im Eigenschaftenfenster an dieinString
-Variable und dasoutMsg
-Argument an dieoutString
-Variable, wie in der folgenden Abbildung dargestellt. Dadurch wird der Wert derinString
-Variable an den Vorgang übergeben und anschließend der Rückgabewert in dieoutString
-Variable eingefügt.Legen Sie eine WriteLine-Aktivität per Drag & Drop unter der Echo-Aktivität ab, um die vom Dienstaufruf zurückgegebene Zeichenfolge anzuzeigen. Die WriteLine-Aktivität befindet sich in der Toolbox im Knoten Primitive. Binden Sie das Text-Argument der WriteLine-Aktivität an die
outString
-Variable, indem Sie in das Textfeld der WriteLine-Aktivität den TextoutString
eingeben. Der Workflow sollte jetzt wie die folgende Abbildung aussehen.Klicken Sie mit der rechten Maustaste auf die Projektmappe „MyWFService“, und wählen Sie Startprojekte festlegen aus. Aktivieren Sie das Optionsfeld Mehrere Startprojekte, und wählen Sie in der Spalte Aktion für jedes Projekt Start aus. Dies ist in der folgenden Abbildung dargestellt.
Drücken Sie STRG+F5, um sowohl den Dienst als auch den Client zu starten. Der ASP.NET Development Server hostet den Dienst, der Browser zeigt die WCF-Hilfeseite an, und die Clientworkflowanwendung wird in einem Konsolenfenster gestartet und zeigt die vom Dienst zurückgegebene Zeichenfolge („Hello, world“) an.