Windows Workflow Foundation の新機能

.NET Framework 4 の Windows Workflow Foundation (WF) により、以前のバージョンのいくつかの開発パラダイムが変更されています。 ワークフローでは、新しい機能のホストの作成、実行、保守、実装が簡単になっています。 .NET Framework 3.0 および .NET Framework 3.5 のワークフロー アプリケーションを移行して最新バージョンを使用する方法の詳細については、「移行ガイダンス」を参照してください。

ワークフロー アクティビティ モデル

アクティビティは、現在はワークフロー作成の基本単位であり、SequentialWorkflowActivity クラスや StateMachineWorkflowActivity クラスは使用されなくなっています。 Activity クラスは、ワークフロー動作の基本抽象クラスです。 このため、アクティビティの作成者は、基本的なカスタム アクティビティ機能用に CodeActivity を実装するか、一定範囲のランタイムを使用するカスタム アクティビティ機能用に NativeActivity を実装することができます。 また、アクティビティの作成者は Activity クラスを使用して、他の NativeActivityCodeActivityAsyncCodeActivity、または DynamicActivity オブジェクトによって新しい動作を宣言して表します。これは、カスタムに開発されたものである場合と、ビルトイン アクティビティ ライブラリに含まれているものである場合があります。

豊富な複合アクティビティ オプション

Flowchart は新しい強力な制御フロー アクティビティです。作成者は、これを使用して任意のループや条件分岐をモデル化できます。 Flowchart により、以前は StateMachineWorkflowActivity でのみ実装が可能であったイベント ドリブン プログラミング モデルを使用できます。 手続き型のワークフローでは、TryCatchSwitch<T> などの従来のフロー制御構造をモデル化する新しいフロー制御アクティビティを利用できます。

拡張ビルトイン アクティビティ ライブラリ

アクティビティ ライブラリには、次のような新しい機能があります。

明示的なアクティビティ データ モデル

.NET Framework 4 には、データを格納または移動するための新しいオプションがあります。 データは、Variable を使用してアクティビティに格納できます。 データをアクティビティに移動したり、アクティビティから移動したりするときは、特殊な引数型を使用してデータの移動方向が判定されます。 これらの型は、InArgumentInOutArgumentOutArgumentです。 詳細については、「Windows Workflow Foundation のデータ モデル」を参照してください。

ホスティング、永続化、追跡の強化されたオプション

.NET Framework 4 には、次のような永続化の拡張機能があります。

  • WorkflowServiceHostWorkflowApplicationWorkflowInvoker などの、ワークフローを実行するための多数のオプションがあります。

  • Persist アクティビティを使用してワークフロー状態データを明示的に永続化できます。

  • ホストは、ActivityInstance をアンロードせずに永続化できます。

  • ワークフローは、永続化できないデータを処理するときは非永続化ゾーンを指定できます。このため、非永続化ゾーンを終了するまで永続化は延期されます。

  • トランザクションは、TransactionScope を使用してワークフローに流し込むことができます。

  • 追跡は、TrackingParticipant を使用して、簡単に実行できます。

  • システムのイベント ログへの追跡は EtwTrackingParticipant を使用して実現されます。

  • 保留中のワークフローの再開は、Bookmark オブジェクトを使用して管理されるようになりました。

WF デザイナー エクスペリエンスの容易な拡張

新しい WF デザイナーは Windows Presentation Foundation (WPF) に基づいて構築されており、Visual Studio の外部で WF デザイナーを再ホストするときに簡単に使用できるモデルです。また、カスタムのアクティビティ デザイナーを作成するための使いやすいメカニズムも備えています。 詳細については、「ワークフロー デザイン操作のカスタマイズ」を参照してください。