このトピックの内容は、Windows Workflow Foundation 4 に該当します。
このサンプルでは、CancellationScope アクティビティを使用してアプリケーション内の処理を取り消す方法を示します。
中間層のコンポーネントやサービスの多くでは、既知のプログラミング構成要素であるトランザクションを使用して取り消しを処理します。ただし、トランザクションでは実行できない処理を取り消さなければならない場合も数多くあります。取り消しを使用することがトランザクションを使用することよりも難しいのは、取り消す必要がある処理を先に追跡しなければならないからです。.NET Framework 4 には、この処理に役立つ CancellationScope アクティビティが用意されています。
取り消しはアクティビティ内またはアクティビティの親からトリガーできます。子アクティビティは、親アクティビティ (Sequence、Parallel、Flowchart、またはカスタム複合アクティビティ) によってスケジュールされます。親アクティビティは、どのような理由でも子アクティビティを取り消すことができます。たとえば、3 つの子分岐がある Parallel アクティビティでは、1 つの分岐が完了し、CompletionCondition 式の評価結果が true であれば、残りの子分岐を取り消します。ワークフローは、ホスト アプリケーションで Cancel を呼び出すことで外部から取り消すこともできます。
CancellationScope アクティビティを使用するには、取り消す必要がある処理を Body プロパティに設定し、取り消し後に実行する処理を CancellationHandler プロパティに設定します。
このサンプルでは、アクティビティ自体からアクティビティを取り消す方法を示します。
このサンプルでは、マイアミ行きのチケットをできるだけ早く購入する必要があるクライアントのシナリオを使用して、CancellationScope アクティビティの例を示します。取り引きを検討している旅行代理店が 2 社あり、このビジネス ロジックを、Parallel アクティビティ内の 2 つの CancellationScope を使用してモデル化しています。Parallel アクティビティの CompletionCondition は true に設定されています。分岐の完了後に CompletionCondition が確認されるため、最初の分岐が完了すると残りの分岐が取り消されます。クライアント アプリケーションは、両方の代理店にチケットを注文し、どちらかでチケットを購入できた時点でもう一方の代理店の注文を取り消します。
このサンプルを使用するには
Visual Studio 2010 を使用して、CancelationScopeXAML.sln ソリューション ファイルを開きます。
ソリューションをビルドするには、F6 キーを押します。
ソリューションを実行するには、Ctrl キーを押しながら F5 キーを押します。
![]() |
---|
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。
<InstallDrive>:\WF_WCF_Samples
このディレクトリが存在しない場合は、「.NET Framework 4 向けの Windows Communication Foundation (WCF) および Windows Workflow Foundation (WF) のサンプル」にアクセスして、Windows Communication Foundation (WCF) および WF のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。
<InstallDrive>:\WF_WCF_Samples\WF\Basic\Built-InActivities\CancellationScope
|