方法: ワークフロー アプリケーションからサービスにアクセスする
このトピックでは、ワークフロー コンソール アプリケーションからワークフロー サービスを呼び出す方法について説明します。 この作業を行うには、「方法: メッセージング アクティビティを使用してワークフロー サービスを作成する」トピックを完了している必要があります。 このトピックでは、ワークフロー アプリケーションからワークフロー サービスを呼び出す方法について説明していますが、同じ方法を使用して、どのような Windows Communication Foundation (WCF) サービスでもワークフロー アプリケーションから呼び出すことができます。
ワークフロー コンソール アプリケーション プロジェクトの作成
Visual Studio 2012 を起動します。
「方法: メッセージング アクティビティを使用してワークフロー サービスを作成する」トピックで作成した MyWFService プロジェクトを読み込みます。
ソリューション エクスプローラーで MyWFService ソリューションを右クリックし、 [追加] 、 [新しいプロジェクト] の順に選択します。 [インストールされたテンプレート] で [ワークフロー] を選択し、プロジェクトの種類の一覧から [ワークフロー コンソール アプリケーション] を選びます。 次の図に示すように、プロジェクトに MyWFClient という名前を付け、既定の場所を使用します。
[OK] ボタンをクリックして [新しいプロジェクトの追加] ダイアログを閉じます。
プロジェクトが作成されると、Workflow1.xaml ファイルがデザイナーで開かれます。 [ツールボックス] タブがまだ開かれていない場合は、これをクリックして開き、プッシュピンをクリックしてツールボックス ウィンドウを開いたままにします。
Ctrl+F5 キーを押して、サービスをビルドして起動します。 以前と同様に、ASP.NET 開発サーバーが起動され、ブラウザーに WCF ヘルプ ページが表示されます。 このページの URI は、次の手順で使用する必要があるため、確認しておいてください。
ソリューション エクスプローラーで MyWFClient プロジェクトを右クリックし、[追加]>[サービス参照] の順に選択します。 [探索] ボタンをクリックして、任意のサービスの現在のソリューションを検索します。 [サービス] ボックスで、Service1.xamlx の横にある三角形をクリックします。 Service1 の横にある三角形をクリックして、Service1 サービスによって実装されるコントラクトの一覧を表示します。 [サービス] 一覧で [Service1] ノードを展開します。 次の図のように、 [操作] 一覧に Echo 操作が表示されます。
既定の名前空間のままにし、 [OK] をクリックして [サービス参照の追加] ダイアログを閉じます。 次のダイアログ ボックスが表示されます。
[OK] をクリックして、このダイアログを閉じます。 次に、Ctrl キーと Shift キーを押しながら B キーを押して、ソリューションをビルドします。 ツールボックスに MyWFClient.ServiceReference1.Activities という新しいセクションが追加されていることに注目してください。 この選択肢を展開して、次の図のように、追加されている Echo アクティビティを確認します。
Sequence アクティビティをデザイナー画面にドラッグ アンド ドロップします。 これは、ツールボックスの [制御フロー] セクションにあります。
Sequence アクティビティにフォーカスがある状態で、[変数] リンクをクリックして、
inString
という名前の文字列変数を追加します。 次の図に示すように、この変数とoutString
という名前の文字列変数に、既定値である"Hello, world"
を設定します。Echo アクティビティを Sequence にドラッグ アンド ドロップします。 次の図のように、プロパティ ウィンドウで、
inMsg
引数をinString
変数にバインドし、outMsg
引数をoutString
変数にバインドします。 これにより、inString
変数の値を操作に渡し、戻り値を取得し、その戻り値をoutString
変数に格納します。サービス呼び出しによって返された文字列を表示するために、Echo アクティビティの下に WriteLine アクティビティをドラッグ アンド ドロップします。 WriteLine アクティビティは、ツールボックスの [プリミティブ] ノードにあります。 WriteLine アクティビティのテキスト ボックスに「
outString
」と入力し、WriteLine アクティビティの Text 引数をoutString
変数にバインドします。 この時点で、ワークフローは次の図のようになります。MyWFService ソリューションを右クリックし、[スタートアップ プロジェクトの設定] を選択します。 次の図のように、[マルチ スタートアップ プロジェクト] ラジオ ボタンを選択し、各プロジェクトの [アクション] 列で [開始] を選択します。
Ctrl+F5 キーを押してサービスとクライアントの両方を起動します。 ASP.NET 開発サーバーによりサービスがホストされ、ブラウザーに WCF ヘルプ ページが表示され、コンソール ウィンドウでクライアント ワークフロー アプリケーションが起動して、サービスから返された文字列 ("Hello, world") が表示されます。