補正サンプル
補正は、業務処理例外の結果として生じるビジネス ロジックの実行を定義します。補正を行うのは、ビジネス プロセスをモデル化するワークフロー設計者だけであり、補正のトリガはランタイムではなく、ユーザーによって定義されます。ランタイムは、補正を定義する対象のメカニズムを提供します。
このサンプルでは、補正される作業単位が CompensatableTransactionScopeActivity アクティビティに含まれています。その後、CompensationHandlerActivity アクティビティがこのスコープのために定義され、このスコープに対して補正作業が定義されます。スコープは完了された場合にのみ補正が可能なため、ThrowActivity アクティビティはスコープの実行終了後に例外をスローします。この例外は、補正アクティビティを含む例外ハンドラによってキャッチされます。補正アクティビティは、ランタイムが次に実行するターゲット スコープを指定します。
このシナリオでは、発注書を受け取り、購入者のクレジット カードから資金が引き出されます。ワークフローは、選択された製品が入手可能かどうかを確認します。入手可能な場合、製品は出荷されます。製品の生産が中止されている場合、DiscontinuedProductException がスローされます。ワークフロー例外ハンドラが DiscontinuedProductException をキャッチします。例外ハンドラは、ハンドラに含まれる CompensateActivity によって定義されている補正ハンドラをトリガします。その後、補正ハンドラが購入者に資金を返金します。
サンプルからの出力は次のようになります。
サンプルの使用
このサンプルを使用するには、SQL 永続性データベースを作成する必要があります。
SQL 永続性データベースを作成するには
Microsoft SQL Server 2005 Express、SQL Server 2000 以降、または SQL Server 2000 Desktop Engine (MSDE) では、SQL クエリ ステートメント
CREATE DATABASE SqlPersistenceService
SQL Server Query Analyzer 作業領域で、使用可能なデータベースのリストから、手順 1. で作成したデータベースを選択します。
[ファイル] メニューの [開く] をクリックして、SQL スクリプト %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<言語名>\SqlPersistence_Schema.sql を開きます。
[実行] をクリックするか、F5 をクリックしてクエリを実行し、SQL 永続性サービス テーブルを作成します。
[ファイル] メニューの [開く] をクリックして、SQL スクリプト %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<言語>\SqlPersistence_Logic.sql を開きます。
[実行] をクリックするか、F5 をクリックしてクエリを実行し、SQL 永続性サービス ストアド プロシージャを作成します。
サンプルをビルドするには
このトピックの [サンプルのダウンロード] をクリックしてサンプルをダウンロードします。
これにより、サンプル プロジェクトがローカルのハード ディスクに抽出されます。
[スタート] をクリックし、[すべてのプログラム] をポイントします。次に、[Microsoft Windows SDK] をポイントし、[CMD シェル] をクリックします。
サンプルのソース ディレクトリに移動します。
コマンド プロンプトで、「MSBUILD <ソリューション ファイル名>」と入力します。
サンプルを実行するには
- [SDK コマンド プロンプト] ウィンドウで、Compensation\bin\debug フォルダ (このサンプルの VB のバージョンでは、Compensation\bin フォルダ) にある .exe ファイルを実行します (このサンプルでは、メイン フォルダの下にあります)。
関連項目
参照
CompensatableTransactionScopeActivity
CompensationHandlerActivity
CodeActivity
FaultHandlerActivity
FaultHandlersActivity
IfElseActivity
IfElseBranchActivity
ThrowActivity
その他の技術情報
Using the CompensationHandler Activity
Adding Compensatable Activities and Compensation Handlers
Compensation Overview
アクティビティのサンプル
Windows Workflow Foundation のサンプル
Copyright © 2007 by Microsoft Corporation.All rights reserved.