再ホストされたワークフロー デザイナーにおける Workflow Foundation 4.5 の新機能のサポート
.NET Framework 4.5 の Windows Workflow Foundation (WF) には、ワークフロー デザイナー操作に関する機能強化など、数多くの新機能が導入されています。 このトピックでは、このような新機能のうち、再ホストされたデザイナーでサポートされている機能と現時点ではサポートされていない機能について詳しく説明します。
Note
.NET Framework 4.5 で導入された Windows Workflow Foundation (WF) の新機能 (デザイナーのホスト変更とは関係ないものを含む) の一覧については、「.NET Framework 4.5 での Windows Workflow Foundation の新機能」を参照してください。
Activities
組み込みのアクティビティ ライブラリには、既存のアクティビティ用の新しいアクティビティと新しい機能が含まれています。 これらの新しいアクティビティはすべて、再ホストされたデザイナーでサポートされています。 これらの新しいアクティビティの詳細については、「.NET Framework 4.5 での Windows Workflow Foundation の新機能」の「アクティビティ」セクションを参照してください。
C# の式
.NET Framework 4.5 より前のバージョンでは、ワークフロー内のすべての式を Visual Basic のみで記述できました。 .NET Framework 4.5 では、Visual Basic の式は Visual Basic を使用して作成されたプロジェクトでのみ使用されます。 Visual C# プロジェクトでは、式に C# が使用されるようになりました。 Visual Studio 2012 でワークフローを作成する場合、文法強調表示や Intellisense など、すべての機能を備えた C# 式エディターが用意されています。 以前のバージョンで作成された、Visual Basic の式を使用する C# ワークフロー プロジェクトは引き続き動作します。
警告
C# の式は、再ホストされたデザイナーではサポートされていません。
デザイナーの新機能
デザイナーでの検索
.NET Framework 4.5 で導入されたクイック検索とフォルダーを指定して検索の機能は、再ホストされたデザイナーではサポートされていません。 Toolbox
による検索は、再ホストされたデザイナーでもサポートされています。 これらの機能の詳細については、「デザイナーでの検索」を参照してください。
警告
クイック検索とフォルダーを指定して検索は、再ホストされたデザイナーではサポートされていません。
変数デザイナーと引数デザイナーのコンテキスト メニューの [削除]
.NET Framework 4 では、変数および引数を削除できるのは、デザイナーでキーボードを使用した場合だけでした。 .NET Framework 4.5 以降では、コンテキスト メニューを使用して変数および引数を削除できます。 この機能は、再ホストされたデザイナーでサポートされています。
変数デザイナーと引数デザイナーのコンテキスト メニューを次のスクリーンショットに示しています。
ブロックの自動挿入シーケンス
ワークフローまたは特定のコンテナー アクティビティ (NoPersistScope など) には Body アクティビティを 1 つしか含めることができないため、2 つ目のアクティビティを追加するには、開発者が最初のアクティビティを削除し、Sequence アクティビティを追加してから、シーケンス アクティビティに両方のアクティビティを追加する必要がありました。 .NET Framework 4.5 以降では、デザイナー画面に 2 つ目のアクティビティを追加すると、Sequence
アクティビティが自動的に作成され、両方のアクティビティがラップされます。 この機能は、再ホストされたデザイナーでサポートされています。
次のスクリーンショットは、WriteLine
の Body
内の NoPersistScope
アクティビティを示しています。
次のスクリーンショットは、2 つ目の WriteLine
を 1 つ目の下にドロップしたときに Body
内に自動的に作成された Sequence
アクティビティを示しています。
パン モード
デザイナーで大規模なワークフロー内をより簡単に移動するには、パン モードを有効にすると、開発者は、スクロール バーを使用する必要なく、ワークフローの表示される部分をクリックおよびドラッグして移動できるようになります。 パン モードをアクティブ化するボタンは、デザイナーの右下隅にあります。 この機能は、再ホストされたデザイナーでサポートされています。
次のスクリーンショットは、ワークフロー デザイナーの右下隅にあるパン ボタンを示しています。
マウスの中央ボタンまたは Space キーを使用して、ワークフロー デザイナーをパンすることもできます。
複数選択
複数のアクティビティを同時に選択できます。これを行うには、複数のアクティビティを囲むようにドラッグするか (パン モードが無効な場合)、Ctrl キーを押したまま目的のアクティビティを 1 つずつクリックします。 この機能は、再ホストされたデザイナーでサポートされています。
選択した複数のアクティビティは、デザイナー内でドラッグ アンド ドロップすることも、コンテキスト メニューを使用して操作することもできます。
ワークフロー項目のアウトライン表示
階層ワークフローを移動しやすくするため、ワークフローのコンポーネントはツリー スタイルのアウトライン表示で示されます。 アウトライン表示は、 [ドキュメント アウトライン] ビューに表示されます。 このビューを Visual Studio で開くには、上部のメニューから [表示] 、 [その他のウィンドウ] 、 [ドキュメント アウトライン] の順に選択するか、Ctrl + W + U キーを押します。 アウトライン表示でノードをクリックすると、ワークフロー デザイナーの対応するアクティビティに移動し、アウトライン表示が更新されて、デザイナーで選択されているアクティビティが表示されます。 この機能は、再ホストされたデザイナーでサポートされています。
「チュートリアル入門」の完成したワークフローの次のスクリーンショットは、シーケンシャル ワークフローを含むアウトライン表示を示しています。
シェル バーおよびヘッダー項目の可視性の詳細な制御
再ホストされたデザイナーでは、標準 UI コントロールの中に、特定のワークフローにとって意味がないものもあれば、無効になっているものもあります。 .NET Framework 4 では、このカスタマイズがデザイナーの下部のシェル バーのみでサポートされています。 .NET Framework 4.5 では、デザイナーの上部にあるシェルのヘッダー項目の表示は、WorkflowShellHeaderItemsVisibility に適切な ShellHeaderItemsVisibility 値を設定することにより調整できます。
フローチャートおよびステート マシンのワークフローの自動接続と自動挿入
.NET Framework 4 では、フローチャート ワークフロー内のノード間の接続は手動で追加する必要がありました。 .NET Framework 4.5 では、フローチャートおよびステート マシンのノードに、アクティビティをツールボックスからデザイナー画面上にドラッグすると表示される自動接続ポイントがあります。 アクティビティをこれらのポイントのうち 1 つにドロップすると、アクティビティが必要な接続と共に自動的に追加されます。
次のスクリーンショットは、アクティビティがツールボックスからドラッグされるときに表示されるアタッチ ポイントを示します。
アクティビティは、フローチャート ノードと状態の間の接続にドラッグすることで、その他 2 つのノード間にノードを自動挿入することもできます。 次のスクリーンショットは、アクティビティをツールボックスからドラッグ アンド ドロップできる、強調表示された接続線を示しています。
自動接続と自動挿入は、再ホストされたデザイナーでサポートされています。
デザイナー注釈
より大規模なワークフローの開発を容易にするため、デザイン プロセスを追跡できるよう注釈の追加がサポートされるようになりました。 注釈は、アクティビティ、状態、フローチャート ノード、変数、および引数に追加できます。 次のスクリーンショットは、デザイナーに注釈を追加するためのコンテキスト メニューを示しています。
デザイナー注釈は、再ホストされたデザイナーでサポートされています。
デザイナーでの ActivityDelegate オブジェクトの定義と使用
.NET Framework 4 のアクティビティでは、ActivityDelegate オブジェクトを使用して、ワークフローの他の部分がワークフローの実行と対話できる実行ポイントを公開していましたが、通常、これらの実行ポイントを使用するには相当な量のコードが必要でした。 このリリースでは、開発者はワークフロー デザイナーを使用してアクティビティ デリゲートを定義および使用できます。 詳細については、「ワークフロー デザイナーでアクティビティ デリゲートを定義および使用する方法」を参照してください。
アクティビティ デリゲートは、再ホストされたデザイナーでサポートされています。
ビルド時の検証
.NET Framework 4 では、ワークフローの検証エラーが、ワークフロー プロジェクトのビルド中のビルド エラーとして数えられていませんでした。 つまり、ワークフローの検証エラーが発生した場合でも、ワークフロー プロジェクトのビルドは成功している可能性があります。 .NET Framework 4.5 では、ワークフローの検証エラーが発生するとビルドは失敗します。
警告
ビルド時の検証は、再ホストされたデザイナーではサポートされていません。
デザイン時バックグラウンド検証
.NET Framework 4 では、ワークフローがフォアグラウンド プロセスとして検証されていました。これにより、複雑または時間のかかる検証プロセスでは UI がブロックされる可能性がありました。 現在、ワークフローの検証はバックグラウンド スレッドで実行されるため、UI がブロックされることはありません。
デザイン時バックグラウンド検証は、再ホストされたデザイナーでサポートされています。
XAML ファイル内で別々の場所にあるビューステート
.NET Framework 4 では、ワークフローのビューステート情報は、多くの異なる場所にある XAML ファイルに保存されていました。 これは、XAML を直接読み取ったり、ビューステート情報を削除するコードを記述したりする開発者にとっては不便です。 .NET Framework 4.5 では、XAML ファイル内のビューステート情報は XAML ファイル内の個別の要素としてシリアル化されています。 開発者は、簡単に、アクティビティのビューステート情報を探して編集したり、ビューステートを完全に削除したりできます。
この機能は、再ホストされたワークフロー デザイナーでサポートされています。
再ホストされたデザイナーでの Workflow 4.5 機能のオプトイン
下位互換性を維持するために、再ホストされたデザイナーでは、.NET Framework 4.5 に含まれる新機能の一部が既定で有効になっていません。 これは、再ホストされたデザイナーを使用する既存のアプリケーションが、最新バージョンに更新することで壊れないようにするためです。 再ホストされたデザイナーで新機能を有効にするには、TargetFrameworkName を ".Net Framework 4.5" に設定するか、DesignerConfigurationService の各メンバーを設定して各機能を有効にします。
新しいワークフロー開発モデル
このリリースには、フローチャートおよびシーケンシャル ワークフロー開発モデルに加えて、ステート マシンのワークフロー、およびコントラクト優先ワークフロー サービスが含まれています。
ステート マシンのワークフロー
ステート マシン ワークフローは、Microsoft .NET Framework 4 Platform Update 1 の .NET Framework 4.0.1 の一部として導入されました。 この更新プログラムには、開発者がステート マシンのワークフローを作成できるようにする、いくつかの新しいクラスとアクティビティが含まれていました。 これらのクラスおよびアクティビティは .NET Framework 4.5 用に更新されました。 更新プログラムには次のものが含まれています。
状態にブレークポイントを設定する機能。
ワークフロー デザイナーで遷移をコピーして貼り付ける機能。
トリガーを共有する遷移の作成に対するデザイナーのサポート。
ステート マシンのワークフロー作成に使用するアクティビティ (StateMachineState、Transition など)。
次のスクリーン ショットは、「チュートリアル入門」の「方法: ステート マシン ワークフローを作成する」のステップで完成したステート マシン ワークフローを示しています。
ステート マシン ワークフローの作成の詳細については、「ステート マシン ワークフロー」を参照してください。 ステート マシンのワークフローは、再ホストされたデザイナーでサポートされています。
コントラクト優先ワークフローの開発
コントラクト優先ワークフローの開発ツールにより、開発者はコード優先のコントラクトを設計することができ、その後、Visual Studio で数回クリックするだけで、各操作を表すアクティビティ テンプレートをツールボックス内に自動的に生成できます。 これらのアクティビティは、コントラクトで定義された操作を実装するワークフローを作成するために使用されます。 ワークフロー デザイナーは、ワークフロー サービスを検証し、これらの操作が実装され、ワークフローの署名がコントラクトの署名と一致することを確認します。 また、開発者は、ワークフロー サービスを、実装済みコントラクトのコレクションと関連付けることもできます。 コントラクト優先ワークフロー サービスの開発について詳しくは、「既存のサービス コントラクトを使用するワークフロー サービスを作成する方法」を参照してください。
警告
コントラクト優先ワークフローの開発は、ワークフロー デザイナーではサポートされていません。
.NET