ワークフロー デザイナのホスト

Windows Workflow Foundation ワークフロー ビジュアル デザイナには Visual Studio バージョンもありますが、Visual Studio 外部の Windows アプリケーションでワークフロー デザイナをホストすることもできます。独自のカスタム Windows アプリケーションで、グラフィックスに基づくワークフロー デザイナをホストできます。カスタム アプリケーションでは、基本的なデザイナ機能 (たとえば作成前のワークフローのグラフィック プレビュー機能) を持つ簡単な形式のワークフロー デザイナを実装できます。または、Visual Studio バージョンのデザイナのような多彩で強力な機能を持つワークフロー デザイナを実装することもできます。

ワークフロー デザイナをホストする際に使用する必要がある主なクラスは、次のとおりです。

  • .NET DesignSurface クラス。これは、完全な自己完結型のデザイン サーフェイスを提供することにより、ユーザーにデザイナとして認識される機能を実装します。

  • WorkflowView クラス。これは、ワークフロー マークアップに記述されたワークフローをビジュアルに表現します。

  • WorkflowDesignerLoader クラス。これを使用すると、カスタム ローダーを使ってワークフロー デザイナとワークフロー デザイナ コンポーネントを読み込むことができます。

  • WorkflowDesignerMessageFilter クラスから派生して、適切な仮想メソッドをオーバーライドして、ワークフロー デザイナ イベント (ドラッグ操作、レイアウトとペイント操作、その他のデザイナ イベント) を処理できるカスタム メッセージ フィルタを作成します。

Basic Designer Hosting」のサンプルは、これらのクラスを使用して、Windows アプリケーションでホストされる簡単なワークフロー デザイナを作成する方法を示しています。

Workflow Tracking Profile Designer」に含まれる WorkflowDesigner コントロールを基にして、ワークフロー デザイナをホストするカスタム アプリケーションを作成できます。WorkflowDesigner コントロールを使用すると、ホスト アプリケーションでワークフロー デザイナ機能を簡単に追加および拡張できます。

メニュー コマンド機能の追加

ワークフロー デザイナは .NET Framework SDK の基本デザイナ クラスに基づいて構築されているため、カスタム アプリケーションでメニュー コマンドにアクセスするには、MenuCommandService クラスから派生させ、いくつかのメンバをオーバーライドして、ワークフロー ローダー オブジェクトが使用するデザイナ ローダー ホストにサービスとしてそれを追加する必要があります。

カスタム MenuCommandService を作成する方法を次の例に示します。この例では、ShowContextMenu が呼び出されると、コンテキスト メニューが作成されます。GetSelectionMenuItems メソッドでは、WorkflowMenuCommands クラスを使用して、ワークフロー デザイナによって提供された適切なメニュー コマンドが、それぞれの対応するテキストに関連付けられます。これが完了すると、イベント ハンドラが各コマンドに関連付けられ、コマンドが選択されるときに該当する MenuCommand が呼び出されるようになります。

次の例は、WorkflowDesignerLoader からの派生型に対するオーバーライドされた Initialize メソッド内で、MenuCommandService 派生型をデザイナ ローダー ホストに追加する方法を示しています。

アプリケーションで使用できる、既定の実装付きのコマンドは次のとおりです。

WorkflowMenuCommands および StandardCommands 内の残りのコマンドを、独自に実装する必要があります。

UndoMultiLevelUndo などのコマンドに関しては、次のようなインターフェイスやクラスから派生して実装する必要があります。

これらの派生サービス クラスを作成した後、このセクションで既に述べたオーバーライドされた Initialize メソッドにこれらを追加する必要があります。

さらに、AddCommand メソッドを使用して、ユーザー実装のコマンドを MenuCommandService 派生型に追加する必要があります。こうすれば、デザイナでコマンドにアクセスしたときに常に適切なイベント ハンドラが呼び出されます。

詳細については、.NET Framework SDK の「Extending Design-Time Support」を参照してください。

デザイナ ホスティングのサンプル

次のサンプルは、ワークフロー デザイナをホストする方法を示しています。

  • Basic Designer Hosting」は、Windows アプリケーションでホストされる簡単なワークフロー デザイナを示しています。

  • Outlook Workflow Wizard」は WorkflowView クラスを使用します。ワークフロー デザイナでビジュアル化できるワークフロー定義を作成するために Windows Workflow Foundation ワークフロー オブジェクト モデルを使用する方法を示しています。

  • Workflow Monitor」は、ワークフロー デザイナを使ってワークフローとアクティビティのステータス情報を表示するツールを作成する方法を示しています。

  • Workflow Tracking Profile Designer」は、WorkflowDesigner コントロールを使ってワークフロー定義から追跡プロファイルを作成するツールの作成方法を示しています。

関連項目

参照

WorkflowView
WorkflowDesignerLoader
WorkflowDesignerMessageFilter

その他の技術情報

Basic Designer Hosting
Outlook Workflow Wizard
Workflow Monitor
Workflow Tracking Profile Designer

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.