Interop アクティビティと .NET Framework 4 内の .NET Framework 3.0 WF アクティビティの使用

このトピックの内容は、Windows Workflow Foundation 4 に該当します。

Interop アクティビティは、.NET Framework 4 ワークフロー内に .NET Framework 3.5 (WF 3.5) アクティビティをラップする .NET Framework 4 (WF 4) アクティビティです。WF 3 アクティビティは、単一のリーフ アクティビティまたはツリー全体のアクティビティです。.NET Framework 3.5 アクティビティの実行 (取り消しおよび例外処理を含む) および保持は、実行中の .NET Framework 4 ワークフロー インスタンスのコンテキスト内で発生します。

Ee264173.note(ja-jp,VS.100).gif Visual Basic 注 :
Interop アクティビティをワークフロー デザイナー ツールボックスに表示するには、ワークフローのプロジェクトで [ターゲット フレームワーク] 設定を [.NET Framework 4] に設定します。

WF 3 アクティビティと Interop アクティビティを使用するための基準

Interop アクティビティ内で WF 3 アクティビティを正常に実行するには、次の基準を満たす必要があります。

  • WF 3 アクティビティが System.Workflow.ComponentModel.Activity から派生しています。

  • WF 3 アクティビティが public として宣言されています。また、abstract ではありません。

  • WF 3 アクティビティにパブリックの既定コンストラクターがあります。

  • Interop アクティビティがサポートできるインターフェイス型にある制限のため、HandleExternalEventActivityCallExternalMethodActivity は直接使用できませんが、ワークフロー通信アクティビティ ツール (WCA.exe) を使用して作成される派生アクティビティを使用できます。詳細については、「Windows Workflow Foundation ツール」を参照してください。

Interop アクティビティ内の WF 3 アクティビティの構成

データを構成して、相互運用上の境界にまたがって WF 3 アクティビティとの間でやり取りするには、WF 3 アクティビティのプロパティとメタデータのプロパティを Interop アクティビティで公開します。WF 3 アクティビティのメタデータのプロパティ (Name など) は、ActivityMetaProperties コレクションを介して公開されます。これは、WF 3 アクティビティのメタデータのプロパティに関する値を定義するために使用される名前と値ペアのコレクションです。メタデータのプロパティは、Metadata フラグを設定する依存関係プロパティに基づくプロパティです。

WF 3 アクティビティのプロパティは、ActivityProperties コレクションを介して公開されます。これは名前と値ペアのセットです。この各値は Argument オブジェクトで、WF 3 アクティビティのプロパティの属性を定義するために使用されます。WF 3 アクティビティのプロパティの方向は推論できないため、すべてのプロパティは InArgument/OutArgument ペアとして表示されます。アクティビティによるプロパティの使用方法によっては、InArgument エントリ、OutArgument エントリ、またはその両方を提供できます。コレクションに含まれる InArgument エントリの想定される名前は、WF 3 アクティビティに定義されているプロパティの名前です。コレクションに含まれる OutArgument エントリの想定される名前は、プロパティの名前と文字列 "Out" を連結した名前です。

Interop アクティビティ内で WF 3 アクティビティを使用する際の制限

WF 3 システム標準アクティビティは、Interop アクティビティで直接ラップすることはできません。DelayActivity などの一部の WF 3 アクティビティの場合、これは類似する WF 4 アクティビティがあることが原因です。その他のアクティビティの場合、これはそのアクティビティの機能がサポートされないことが原因です。多くの WF 3 システム標準アクティビティは、次の制限に従い、Interop アクティビティによってラップしたワークフロー内で使用できます。

  1. Interop アクティビティでは、Send および Receive を使用できません。

  2. Interop 内では、WebServiceInputActivityWebServiceOutputActivity、および WebServiceFaultActivity を使用できません。

  3. Interop アクティビティでは、InvokeWorkflowActivity を使用できません。

  4. Interop アクティビティでは、SuspendActivity を使用できません。

  5. Interop アクティビティ内では、補正関係のアクティビティを使用できません。

また、Interop アクティビティ内での WF 3 アクティビティの使用に関して理解できる動作仕様もいくつかあります。

  1. Interop アクティビティ内に含まれる WF 3 アクティビティは、Interop アクティビティを実行するときに初期化されます。WF 4 には、実行前にワークフロー インスタンスの初期化フェーズはありません。

  2. WF 4 ランタイムは、トランザクションの開始場所 (Interop アクティビティ内かどうか) を問わず、トランザクションの開始時にワークフロー インスタンスの状態を確認しません。

  3. Interop アクティビティ内のアクティビティに関する WF 3 の追跡レコードは、WF 4 の追跡参加要素に InteropTrackingRecord オブジェクトとして提供されます。InteropTrackingRecord は、CustomTrackingRecord の派生です。

  4. WF 3 カスタム アクティビティからは、WF 3 ワークフロー ランタイム内とまったく同じ方法で、相互運用環境内でワークフロー キューを使用してデータにアクセスできます。カスタム アクティビティ コードの変更は必要ありません。ホストでは、Bookmark を再開することで WF 3 ワークフロー キューにデータが追加されます。ブックマークの名前は、IComparable ワークフロー キュー名の文字列の形式です。

参照

処理手順

.NET Framework 4 ワークフローでの .NET Framework 3.0 または .NET Framework 3.5 アクティビティの使用