次の方法で共有


.NET Framework 4 の外部化されたポリシー アクティビティ

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

このサンプルでは、ExternalizedPolicy4 アクティビティによって既存の .NET Framework Version 3.5 Windows Workflow Foundation (WF 3.5) RuleSet オブジェクトを、WF 3.5 に付属しているルール エンジンを使用して .NET Framework Version 4 Windows Workflow Foundation (WF 4) で直接実行できるようにする方法を示します。このアクティビティを使用すると、既存の WF 3.5 RuleSet を開いて実行できます。Windows Workflow Foundation の一部として用意されている WF 3.5 ルール エンジン詳細情報、「Windows Workflow Foundation ルール エンジンの紹介」を参照してください。.NET Framework 4 の WF へのルール移行詳細情報、「移行のガイドライン」の移行のガイドラインを参照してください。

このサンプルのプロジェクト

プロジェクト名

説明

メイン ファイル

ExternalizedPolicy4

ExternalizedPolicy4 アクティビティとその WF 4 デザイナーが含まれます。

ExternalizedPolicy4.cs: アクティビティ定義です。

ExternalizedPolicy4Designer.xaml: ExternalizedPolicy4 アクティビティのカスタム デザイナーです。WF 3.5 ルール エンジンからルール エディター (RuleSetDialog) を使用します。

ImperativeCodeClientSample

命令型 C# コードで、ExternalizedPolicy4 アプリケーションを使用してワークフローを構成および実行するサンプル クライアント アプリケーションです (デザイナーは不使用)。

ApplyDiscount.rules: WF ルール定義が記述されたファイルです。

Order.cs: 顧客の注文を表す型です。ルールはこの型のオブジェクトに適用されます。

Program.cs: Policy4 アクティビティを使用するワークフローを構成および実行して、ApplyDiscount.rules で定義されているルールを Order オブジェクトのインスタンスに適用します。

App.config: ルール ファイルのパスが記述された構成ファイルです。

DesignerClientSample

WF デザイナーで、ExternalPolicy4 アプリケーションを使用してワークフローを構成および実行するサンプル クライアント アプリケーションです。

Sequence1.xaml: Policy4 アクティビティを使用してルール評価を実行するシーケンシャル ワークフローです。

Program.cs: Sequence1.xaml で定義されているワークフローのインスタンスを実行します。

ExternalizedPolicy4 アクティビティ

ExternalizedPolicy4 アクティビティは、WF 4.0 のワークフロー内で WF 3.5 RuleSet オブジェクトを実行できるようにする NativeActivity です。次のコード例は、このアクティビティのパブリック オブジェクト モデルの簡略化された定義です。

public class ExternalizedPolicy4Activity<TResult>: CodeActivity
{
    public string RulesFilePath 
    
    public string RuleSetName         

    [RequiredArgument]
    public InArgument<T> TargetObject 

    [RequiredArgument]
    public OutArgument<T> ResultObject 

    public OutArgument<ValidationErrorCollection> ValidationErrors 
}

プロパティ

説明

RuleSetFilePath

アクティビティが実行されるときに評価される .NET Framework 3.5 RuleSet ファイルのパスです。

RuleSetName

.rules ファイル内で使用される RuleSet の名前です。

TargetObject

RuleSetRule オブジェクトを評価する対象のオブジェクトです。

ResultObject

ルールが適用された後の結果として得られるオブジェクトです (たとえば、ルールが Input 引数に対して適用され、結果が Result 引数に格納されます)。

ValidationError

実行前に対象オブジェクトに対して RuleSet を検証するときに、WF 3.5 ルール エンジンから返される検証エラーのリストです。

ExternalizedPolicy4 アクティビティ デザイナー

ExternalizedPolicy4 デザイナーを使用すると、コードを記述せずに、既存の RuleSet を使用するようにアクティビティを構成できます。.rules ファイルのパスを設定し、使用する RuleSet の名前を指定するだけです。また、RuleSet を変更することもできます。ソリューションをビルドすると、Microsoft.Samples.Activities.Rules セクションのツールボックス内からこのデザイナーを使用できるようになります。このデザイナーでは、.rules ファイルと RuleSet を選択できます。[Edit RuleSet] ボタンをクリックすると、WF 3.5 RuleSetDialog が表示されます。このダイアログはホストを変更した WF 3.5 ルール エディターであり、ExternalizedPolicy4 アクティビティで実行するルールを表示および編集するために使用します。

Policy4 と ExternalPolicy4

.NET Framework 4 のポリシー アクティビティを使用すると、WF 4 のワークフロー内で .NET Framework 3.5 RuleSet を作成して実行できます。RuleSet は、Policy4 アクティビティの XAML 定義でインラインでシリアル化されます。ExternalizedPolicy4 サンプルでは、既存の外部 RuleSet (.rules ファイル内に格納) を使用する方法を示します。

このサンプルの使用

このサンプルを実行するのに特別な設定は必要ありません。Visual Studio 2010 でソリューションを開き、F5 キーを押してアプリケーションを実行します。

このサンプルには、ImperativeCodeClientSample と DesignerClientSample の 2 つのクライアント アプリケーションがあります。ImperativeCodeClientSample クライアントは、C# 命令型コードを使用して ExternalizedPolicy4 アクティビティを構成および実行する方法を示します。DesignerClientSample は、デザイナーを使用して ExternalizedPolicy4 アクティビティを構成および実行する方法を示します。

ImperativeCodeClientSample アプリケーションを実行するには

  1. Visual Studio 2010 を使用して、Policy4sample.sln ソリューション ファイルを開きます。

  2. ソリューション エクスプローラーで、ImperativeCodeClientSample プロジェクトを右クリックし、[スタートアップ プロジェクトに設定] をクリックします。

  3. プロジェクトを実行するには、Ctrl キーを押しながら F5 キーを押します。

DesignerClientSample アプリケーションを実行するには

  1. Visual Studio 2010 を使用して、Policy4sample.sln ソリューション ファイルを開きます。

  2. ソリューション エクスプローラーで、DesignerClientSample プロジェクトを右クリックし、[スタートアップ プロジェクトに設定] をクリックします。

  3. プロジェクトをコンパイルするには、F6 キーを押します。

  4. プロジェクトを実行するには、Ctrl キーを押しながら F5 キーを押します。

Ee662962.Important(ja-jp,VS.100).gif 注 :
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。

<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\Scenario\ActivityLibrary\ExternalizedPolicy4