方法: ワークフロー アプリケーションからサービスにアクセスする

このトピックでは、ワークフロー コンソール アプリケーションからワークフロー サービスを呼び出す方法について説明します。 この作業を行うには、「方法: メッセージング アクティビティを使用してワークフロー サービスを作成する」トピックを完了している必要があります。 このトピックでは、ワークフロー アプリケーションからワークフロー サービスを呼び出す方法について説明していますが、同じ方法を使用して、どのような Windows Communication Foundation (WCF) サービスでもワークフロー アプリケーションから呼び出すことができます。

ワークフロー コンソール アプリケーション プロジェクトの作成

  1. Visual Studio 2012 を起動します。

  2. 方法: メッセージング アクティビティを使用してワークフロー サービスを作成する」トピックで作成した MyWFService プロジェクトを読み込みます。

  3. ソリューション エクスプローラーMyWFService ソリューションを右クリックし、 [追加][新しいプロジェクト] の順に選択します。 [インストールされたテンプレート][ワークフロー] を選択し、プロジェクトの種類の一覧から [ワークフロー コンソール アプリケーション] を選びます。 次の図に示すように、プロジェクトに MyWFClient という名前を付け、既定の場所を使用します。

    Add New Project Dialog

    [OK] ボタンをクリックして [新しいプロジェクトの追加] ダイアログを閉じます。

  4. プロジェクトが作成されると、Workflow1.xaml ファイルがデザイナーで開かれます。 [ツールボックス] タブがまだ開かれていない場合は、これをクリックして開き、プッシュピンをクリックしてツールボックス ウィンドウを開いたままにします。

  5. Ctrl+F5 キーを押して、サービスをビルドして起動します。 以前と同様に、ASP.NET 開発サーバーが起動され、ブラウザーに WCF ヘルプ ページが表示されます。 このページの URI は、次の手順で使用する必要があるため、確認しておいてください。

    Browser displaying WCF help page and URI

  6. ソリューション エクスプローラーMyWFClient プロジェクトを右クリックし、[追加]>[サービス参照] の順に選択します。 [探索] ボタンをクリックして、任意のサービスの現在のソリューションを検索します。 [サービス] ボックスで、Service1.xamlx の横にある三角形をクリックします。 Service1 の横にある三角形をクリックして、Service1 サービスによって実装されるコントラクトの一覧を表示します。 [サービス] 一覧で [Service1] ノードを展開します。 次の図のように、 [操作] 一覧に Echo 操作が表示されます。

    Add Service Reference Dialog

    既定の名前空間のままにし、 [OK] をクリックして [サービス参照の追加] ダイアログを閉じます。 次のダイアログ ボックスが表示されます。

    Add Service Reference Notification dialog

    [OK] をクリックして、このダイアログを閉じます。 次に、Ctrl キーと Shift キーを押しながら B キーを押して、ソリューションをビルドします。 ツールボックスに MyWFClient.ServiceReference1.Activities という新しいセクションが追加されていることに注目してください。 この選択肢を展開して、次の図のように、追加されている Echo アクティビティを確認します。

    Echo activity in the toolbox

  7. Sequence アクティビティをデザイナー画面にドラッグ アンド ドロップします。 これは、ツールボックスの [制御フロー] セクションにあります。

  8. Sequence アクティビティにフォーカスがある状態で、[変数] リンクをクリックして、inString という名前の文字列変数を追加します。 次の図に示すように、この変数と outString という名前の文字列変数に、既定値である "Hello, world" を設定します。

    Adding an inString variable

  9. Echo アクティビティを Sequence にドラッグ アンド ドロップします。 次の図のように、プロパティ ウィンドウで、inMsg 引数を inString 変数にバインドし、outMsg 引数を outString 変数にバインドします。 これにより、inString 変数の値を操作に渡し、戻り値を取得し、その戻り値を outString 変数に格納します。

    Binding the arguments to variables

  10. サービス呼び出しによって返された文字列を表示するために、Echo アクティビティの下に WriteLine アクティビティをドラッグ アンド ドロップします。 WriteLine アクティビティは、ツールボックスの [プリミティブ] ノードにあります。 WriteLine アクティビティのテキスト ボックスに「outString」と入力し、WriteLine アクティビティの Text 引数を outString 変数にバインドします。 この時点で、ワークフローは次の図のようになります。

    The complete client workflow

  11. MyWFService ソリューションを右クリックし、[スタートアップ プロジェクトの設定] を選択します。 次の図のように、[マルチ スタートアップ プロジェクト] ラジオ ボタンを選択し、各プロジェクトの [アクション] 列で [開始] を選択します。

    Startup projects options

  12. Ctrl+F5 キーを押してサービスとクライアントの両方を起動します。 ASP.NET 開発サーバーによりサービスがホストされ、ブラウザーに WCF ヘルプ ページが表示され、コンソール ウィンドウでクライアント ワークフロー アプリケーションが起動して、サービスから返された文字列 ("Hello, world") が表示されます。

関連項目