方法: メッセージング アクティビティを使用してワークフロー サービスを作成する
このトピックでは、メッセージング アクティビティを使用して単純なワークフロー サービスを作成する方法について説明します。 ここでは、メッセージング アクティビティだけで構成されるサービスのワークフロー サービスを作成する機構に重点を置きます。 実際のサービスでは、ワークフローに他の多くのアクティビティが含まれます。 このサービスは、文字列を取得して、それを呼び出し元に返す、Echo という 1 つの操作を実装します。 このトピックは、一連の 2 つのトピックの最初のものです。 次のトピック「方法: ワークフロー アプリケーションからサービスにアクセスする」では、このトピックで作成したサービスを呼び出すワークフロー アプリケーションの作成方法について説明します。
ワークフロー サービス プロジェクトを作成するには
Visual Studio 2012 を起動します。
[ファイル] メニューで [新規作成] 、 [プロジェクト] の順に選択して、 [新しいプロジェクト] ダイアログ ボックスを表示します。 インストールされているテンプレートの一覧で [ワークフロー] を選択し、プロジェクトの種類の一覧で [WCF ワークフロー サービス アプリケーション] を選択します。 次の図に示すように、プロジェクトに
MyWFService
という名前を付け、既定の場所を使用します。[OK] ボタンをクリックして [新しいプロジェクト] ダイアログ ボックスを閉じます。
プロジェクトが作成されると、次の図に示すように、Service1.xamlx ファイルがデザイナーで開かれます。
シーケンシャル サービス というラベルの付いたアクティビティを右クリックし、 [削除] をクリックします。
ワークフロー サービスを実装するには
画面左側の [ツールボックス] タブをクリックしてツールボックスを表示し、プッシュピンをクリックしてウィンドウを開いたままにします。 次の図に示すように、ツールボックスの [メッセージング] セクションを展開して、メッセージング アクティビティおよびメッセージング アクティビティ テンプレートを表示します。
[ReceiveAndSendReply] テンプレートをワークフロー デザイナーにドラッグ アンド ドロップします。 これで、Sequence アクティビティが作成されます。次の図に示すように、Receive アクティビティの後に SendReply アクティビティがあります。
SendReply アクティビティの Request プロパティは
Receive
に設定されています。これは、Receive アクティビティが応答する SendReply アクティビティの名前です。Receive アクティビティの [OperationName] というラベルの付いたボックスに「
Echo
」と入力します。 これにより、サービスが実装する操作の名前が定義されます。Receive アクティビティを選択した状態で、プロパティ ウィンドウがまだ開いていない場合は、 [表示] メニューの [プロパティ ウィンドウ] をクリックして開きます。 [プロパティ ウィンドウ] で、 [CanCreateInstance] が表示されるまで下へスクロールし、次の図に示すように、チェックボックスをオンにします。 この設定によって、ワークフロー サービス ホストはメッセージが受信されると (必要に応じて) サービスの新しいインスタンスを作成できるようになります。
Sequence アクティビティを選択し、デザイナーの左下隅にある [変数] をクリックします。 これにより、変数エディターが開かれます。 [変数の作成] リンクをクリックして、操作に送られる文字列を格納する変数を追加します。 変数に
msg
という名前を付け、次の図に示すように、その変数の種類を [文字列] に設定します。[変数] をもう一度クリックして、変数エディターを閉じます。
Receive アクティビティの [コンテンツ] ボックスの [定義] リンクをクリックして、[コンテンツ定義] ダイアログを表示します。 次の例に示すように、 [パラメーター] オプション ボタンを選択して、 [新しいパラメーターの追加] リンクをクリックし、 [名前] ボックスに「
inMsg
」と入力します。 [型] ボックスで [文字列] を選択し、 [割り当て先] ボックスに「msg
」と入力します。これにより、Receive アクティビティが文字列パラメーターを受け取り、そのデータが
msg
変数にバインドされるように指定されます。 [OK] をクリックして [コンテンツ定義] ダイアログ ボックスを閉じます。SendReply アクティビティの [コンテンツ] ボックスの [定義] リンクをクリックして、 [コンテンツ定義] ダイアログ ボックスを表示します。 次の例に示すように、 [パラメーター] オプション ボタンを選択して、 [新しいパラメーターの追加] リンクをクリックし、 [名前] ボックスに「
outMsg
」と入力します。 [型] ボックスで [文字列] を選択し、 [値] ボックスに「msg
」と入力します。これにより、SendReply アクティビティがメッセージまたはメッセージ コントラクト型を送信し、そのデータが
msg
変数にバインドされるように指定されます。 これは SendReply アクティビティであるため、msg
のデータは、アクティビティがクライアントに送り返すメッセージの設定に使用されます。 [OK] をクリックして [コンテンツ定義] ダイアログ ボックスを閉じます。[ビルド] メニューの [ソリューションのビルド] をクリックして、ソリューションを保存およびビルドします。
ワークフロー サービス プロジェクトの構成
ワークフロー サービスは完成しました。 ここでは、ホストと実行を容易にするように、ワークフロー サービス ソリューションを構成する方法について説明します。 このソリューションでは、ASP.NET 開発サーバーを使用してサービスをホストします。
プロジェクトのスタートアップ オプションを設定するには
ソリューション エクスプローラーで [MyWFService] を右クリックし、 [プロパティ] をクリックして [プロジェクトのプロパティ] ダイアログ ボックスを表示します。
[Web] タブを選択し、次の図に示すように、 [開始動作] の [ページを指定する] を選択して、ボックスに「
Service1.xamlx
」と入力します。これにより、ASP.NET 開発サーバーの Service1.xamlx で定義されたサービスがホストされます。
Ctrl + F5 キーを押してサービスを起動します。 次の図に示すように、ASP.NET 開発サーバーのアイコンが、デスクトップの右下側に表示されます。
また、ブラウザーに、サービスの WCF サービス ヘルプ ページが表示されます。
「方法: ワークフロー アプリケーションからサービスにアクセスする」トピックに進み、このサービスを呼び出すワークフロー クライアントを作成します。