このトピックの内容は、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 |
RuleSet の Rule オブジェクトを評価する対象のオブジェクトです。 |
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 アプリケーションを実行するには
Visual Studio 2010 を使用して、Policy4sample.sln ソリューション ファイルを開きます。
ソリューション エクスプローラーで、ImperativeCodeClientSample プロジェクトを右クリックし、[スタートアップ プロジェクトに設定] をクリックします。
プロジェクトを実行するには、Ctrl キーを押しながら F5 キーを押します。
DesignerClientSample アプリケーションを実行するには
Visual Studio 2010 を使用して、Policy4sample.sln ソリューション ファイルを開きます。
ソリューション エクスプローラーで、DesignerClientSample プロジェクトを右クリックし、[スタートアップ プロジェクトに設定] をクリックします。
プロジェクトをコンパイルするには、F6 キーを押します。
プロジェクトを実行するには、Ctrl キーを押しながら F5 キーを押します。
![]() |
---|
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。
<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
|