方法: メッセージング アクティビティを使用してワークフロー サービスを作成する

このトピックでは、メッセージング アクティビティを使用して単純なワークフロー サービスを作成する方法について説明します。 ここでは、メッセージング アクティビティだけで構成されるサービスのワークフロー サービスを作成する機構に重点を置きます。 実際のサービスでは、ワークフローに他の多くのアクティビティが含まれます。 このサービスは、文字列を取得して、それを呼び出し元に返す、Echo という 1 つの操作を実装します。 このトピックは、一連の 2 つのトピックの最初のものです。 次のトピック「方法: ワークフロー アプリケーションからサービスにアクセスする」では、このトピックで作成したサービスを呼び出すワークフロー アプリケーションの作成方法について説明します。

ワークフロー サービス プロジェクトを作成するには

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

  2. [ファイル] メニューで [新規作成][プロジェクト] の順に選択して、 [新しいプロジェクト] ダイアログ ボックスを表示します。 インストールされているテンプレートの一覧で [ワークフロー] を選択し、プロジェクトの種類の一覧で [WCF ワークフロー サービス アプリケーション] を選択します。 次の図に示すように、プロジェクトに MyWFService という名前を付け、既定の場所を使用します。

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

  3. プロジェクトが作成されると、次の図に示すように、Service1.xamlx ファイルがデザイナーで開かれます。

    Screenshot shows the open Service1.xamlx file in the designer.

    シーケンシャル サービス というラベルの付いたアクティビティを右クリックし、 [削除] をクリックします。

ワークフロー サービスを実装するには

  1. 画面左側の [ツールボックス] タブをクリックしてツールボックスを表示し、プッシュピンをクリックしてウィンドウを開いたままにします。 次の図に示すように、ツールボックスの [メッセージング] セクションを展開して、メッセージング アクティビティおよびメッセージング アクティビティ テンプレートを表示します。

    Screenshot that shows the toolbox with Messaging section expanded.

  2. [ReceiveAndSendReply] テンプレートをワークフロー デザイナーにドラッグ アンド ドロップします。 これで、Sequence アクティビティが作成されます。次の図に示すように、Receive アクティビティの後に SendReply アクティビティがあります。

    Screenshot that shows the ReceiveAndSendReply template.

    SendReply アクティビティの Request プロパティは Receive に設定されています。これは、Receive アクティビティが応答する SendReply アクティビティの名前です。

  3. Receive アクティビティの [OperationName] というラベルの付いたボックスに「Echo」と入力します。 これにより、サービスが実装する操作の名前が定義されます。

    Screenshot that shows where to specify the operation name.

  4. Receive アクティビティを選択した状態で、プロパティ ウィンドウがまだ開いていない場合は、 [表示] メニューの [プロパティ ウィンドウ] をクリックして開きます。 [プロパティ ウィンドウ] で、 [CanCreateInstance] が表示されるまで下へスクロールし、次の図に示すように、チェックボックスをオンにします。 この設定によって、ワークフロー サービス ホストはメッセージが受信されると (必要に応じて) サービスの新しいインスタンスを作成できるようになります。

    Screenshot that shows the CanCreateInstance property.

  5. Sequence アクティビティを選択し、デザイナーの左下隅にある [変数] をクリックします。 これにより、変数エディターが開かれます。 [変数の作成] リンクをクリックして、操作に送られる文字列を格納する変数を追加します。 変数に msg という名前を付け、次の図に示すように、その変数の種類を [文字列] に設定します。

    Screenshot that shows how to add a variable.

    [変数] をもう一度クリックして、変数エディターを閉じます。

  6. Receive アクティビティの [コンテンツ] ボックスの [定義] リンクをクリックして、[コンテンツ定義] ダイアログを表示します。 次の例に示すように、 [パラメーター] オプション ボタンを選択して、 [新しいパラメーターの追加] リンクをクリックし、 [名前] ボックスに「inMsg」と入力します。 [型] ボックスで [文字列] を選択し、 [割り当て先] ボックスに「msg」と入力します。

    Screenshot that shows adding Parameters content.

    これにより、Receive アクティビティが文字列パラメーターを受け取り、そのデータが msg 変数にバインドされるように指定されます。 [OK] をクリックして [コンテンツ定義] ダイアログ ボックスを閉じます。

  7. SendReply アクティビティの [コンテンツ] ボックスの [定義] リンクをクリックして、 [コンテンツ定義] ダイアログ ボックスを表示します。 次の例に示すように、 [パラメーター] オプション ボタンを選択して、 [新しいパラメーターの追加] リンクをクリックし、 [名前] ボックスに「outMsg」と入力します。 [型] ボックスで [文字列] を選択し、 [値] ボックスに「msg」と入力します。

    Screenshot that shows how to add the outMsg parameter.

    これにより、SendReply アクティビティがメッセージまたはメッセージ コントラクト型を送信し、そのデータが msg 変数にバインドされるように指定されます。 これは SendReply アクティビティであるため、msg のデータは、アクティビティがクライアントに送り返すメッセージの設定に使用されます。 [OK] をクリックして [コンテンツ定義] ダイアログ ボックスを閉じます。

  8. [ビルド] メニューの [ソリューションのビルド] をクリックして、ソリューションを保存およびビルドします。

ワークフロー サービス プロジェクトの構成

ワークフロー サービスは完成しました。 ここでは、ホストと実行を容易にするように、ワークフロー サービス ソリューションを構成する方法について説明します。 このソリューションでは、ASP.NET 開発サーバーを使用してサービスをホストします。

プロジェクトのスタートアップ オプションを設定するには

  1. ソリューション エクスプローラー[MyWFService] を右クリックし、 [プロパティ] をクリックして [プロジェクトのプロパティ] ダイアログ ボックスを表示します。

  2. [Web] タブを選択し、次の図に示すように、 [開始動作][ページを指定する] を選択して、ボックスに「Service1.xamlx」と入力します。

    Screenshot that shows the project properties dialog.

    これにより、ASP.NET 開発サーバーの Service1.xamlx で定義されたサービスがホストされます。

  3. Ctrl + F5 キーを押してサービスを起動します。 次の図に示すように、ASP.NET 開発サーバーのアイコンが、デスクトップの右下側に表示されます。

    Screenshot that shows the ASP.NET Developer Server icon.

    また、ブラウザーに、サービスの WCF サービス ヘルプ ページが表示されます。

    Screenshot that shows the WCF Service Help Page.

  4. 方法: ワークフロー アプリケーションからサービスにアクセスする」トピックに進み、このサービスを呼び出すワークフロー クライアントを作成します。

関連項目