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