ドキュメント承認プロセス
DocumentApprovalProcess サンプルでは、Windows Workflow Foundation (WF) と Windows Communication Foundation (WCF) の多くの機能を一緒に使用する方法を示します。 ドキュメント承認プロセスのシナリオを実装する方法を示します。 クライアント アプリケーションでは、承認の必要なドキュメントを送信したり、ドキュメントを承認したりすることができます。 クライアント間の通信を促進したり承認プロセスのルールを適用したりするための承認マネージャー アプリケーションも用意されています。 この承認プロセスは、複数の種類の承認を実行できるワークフローで、 単一承認、定足数承認 (承認者全体のパーセンテージ)、および複合承認 (定足数承認と単一承認のシーケンスから成る承認) を得るためのアクティビティが用意されています。
サンプルの詳細
次の図は、ドキュメント承認プロセスのワークフローを表しています。
クライアントから見た場合、承認プロセスは次のように機能します。
クライアントが承認プロセス システムに定期受信します。
WCF クライアントが、承認マネージャー アプリケーションによってホストされている WCF サービスにその要求を送信します。
一意のユーザー ID がクライアントに返されます。 これで、クライアントが承認プロセスに参加できるようになります。
プロセスに参加したクライアントは、単一、定足数、または複合の承認プロセスを使用して、承認の必要なドキュメントを送信できます。
クライアントのインターフェイスにあるボタンをクリックすると、クライアントのワークフロー サービス ホストでワークフロー インスタンスが開始されます。
ワークフローが承認マネージャー アプリケーションに承認要求を送信します。
ワークフロー マネージャーの側でも、承認プロセスを表すワークフローが開始されます。
マネージャーの承認ワークフローが実行されると、結果がクライアントに返されます。
結果がクライアントに表示されます。
クライアントは、いつでも承認要求を受信してその要求に応答できます。
クライアントでホストされている WCF サービスが、承認マネージャー アプリケーションからの承認要求を受信します。
ドキュメントの情報がレビューのためにクライアントに表示されます。
ユーザーは、そのドキュメントを承認することも却下することもできます。
承認応答は、WCF クライアントを使用して承認マネージャー アプリケーションに返されます。
承認マネージャー アプリケーションから見た場合、承認プロセスは次のように機能します。
クライアントが承認プロセス システムへの参加を要求します。
承認マネージャーの WCF サービスが承認プロセス システムへの参加要求を受信します。
クライアントに対して一意の ID が生成され、 ユーザー情報がデータベースに格納されます。
一意の ID がユーザーに返されます。
承認要求が受信されます。 承認マネージャーが承認プロセスを実行します。
承認要求が承認マネージャーによって受信されると、新しいワークフローが開始されます。
要求の種類 (単一、定足数、または複合) に応じて異なるアクティビティが実行されます。
相関関係を持つ Send アクティビティと Receive アクティビティを使用して、承認要求がレビューのためにクライアントに送信され、応答が受信されます。
承認プロセス ワークフローの結果がクライアントに送信されます。
サンプルの使用
データベースを設定するには
- 管理者特権で開いた Visual Studio コマンド プロンプトから、この DocumentApprovalProcess フォルダーへ移動して、Setup.cmd を実行します。
アプリケーションを設定するには
Visual Studio を使用して、DocumentApprovalProcess.sln ソリューション ファイルを開きます。
ソリューションをビルドするには、Ctrl キーと Shift キーを押しながら B キーを押します。
ソリューションを実行するには、承認マネージャー アプリケーションを起動します。それには、[ソリューション エクスプローラー] で [ApprovalManager] プロジェクトを右クリックし、右クリック メニューから [デバッグ] ->[新しいインスタンスを開始] をクリックします。
準備完了のメッセージが表示されるまで待ちます。
単一承認のシナリオを実行するには
管理者のアクセス許可を使用してコマンド プロンプトを開きます。
ソリューションが含まれているディレクトリに移動します。
ApprovalClient\Bin\Debug フォルダーに移動して、ApprovalClient.exe のインスタンスを 2 つ実行します。
[discover] をクリックして、 [subscribe] ボタンが有効になるまで待ちます。
ユーザー名を入力し、 [subscribe] をクリックします。 一方のクライアントに対しては "
UserType1
" を使用し、もう一方のクライアントに対しては "UserType2
" を使用します。UserType1
クライアントで、ドロップダウン メニューから単一承認を選択し、ドキュメントの名前と内容を入力します。 [Request Approval] をクリックします。UserType2
クライアントに承認待ちのドキュメントが表示されます。 それを選択し、 [approve] または [reject] をクリックします。UserType1
クライアントに結果が表示されます。
定足数承認のシナリオを実行するには
管理者のアクセス許可を使用してコマンド プロンプトを開きます。
ソリューションが含まれているディレクトリに移動します。
ApprovalClient\Bin\Debug フォルダーに移動して、ApprovalClient.exe のインスタンスを 3 つ実行します。
[discover] をクリックして、 [subscribe] ボタンが有効になるまで待ちます。
ユーザー名を入力し、 [subscribe] をクリックします。 1 つのクライアントに対しては "
UserType1
" を使用し、残りの 2 つのクライアントに対しては "UserType2
" を使用します。UserType1
クライアントで、ドロップダウン メニューから定足数承認を選択し、ドキュメントの名前と内容を入力します。 [Request Approval] をクリックします。 これにより、2 つのUserType2
クライアントが、ドキュメントを承認または却下するように要求されます。 両方のUserType2
クライアントが応答する必要がありますが、いずれか一方のクライアントが承認すればドキュメントは承認されます。2 つの
UserType2
クライアントに承認待ちのドキュメントが表示されます。 それを選択し、 [approve] または [reject] をクリックします。UserType1
クライアントに結果が表示されます。
複合承認のシナリオを実行するには
管理者のアクセス許可を使用してコマンド プロンプトを開きます。
ソリューションが含まれているディレクトリに移動します。
ApprovalClient\Bin\Debug フォルダーに移動して、ApprovalClient.exe のインスタンスを 4 つ実行します。
[discover] をクリックして、 [subscribe] ボタンが有効になるまで待ちます。
ユーザー名を入力し、 [subscribe] をクリックします。 1 つのクライアントに対して "
UserType1
" を、2 つのクライアントに対して "UserType2
" を、最後のクライアントに対して "UserType3
" を使用します。UserType1
クライアントで、ドロップダウン メニューから単一承認を選択し、ドキュメントの名前と内容を入力します。 [Request Approval] をクリックします。2 つの
UserType2
クライアントに承認待ちのドキュメントが表示されます。 そのドキュメントを選択し、[approve] をクリックします。ドキュメントがUserType3
クライアントに渡されます。ドキュメントは、最初の
UserType2
クライアントの定足数によって承認されるとUserType3
クライアントに渡されます。UserType3
クライアントでドキュメントを承認または却下します。UserType1
クライアントに結果が表示されます。
クリーンアップするには
- Visual Studio のコマンド プロンプトで、DocumentApprovalProcess フォルダーに移動して Cleanup.cmd を実行します。
.NET