次の方法で共有


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

Rules-ExternalizedPolicy4 サンプルでは、ExternalizedPolicy4 アクティビティで、WF 3.5 に付属するルール エンジンを使用して、.NET Framework 4.6.1 Windows Workflow Foundation (WF 4.5) で既存の .NET Framework 3.5 Windows Workflow Foundation (WF 3.5) RuleSet オブジェクトを直接実行する方法を示します。 このアクティビティを使用すると、既存の WF 3.5 RuleSetを開いて実行できます。 Windows Workflow Foundation の一部として含まれる WF 3.5 ルール エンジンの詳細については、「 Windows Workflow Foundation ルール エンジンの概要」を参照してください。 .NET Framework 4.6.1 での WF へのルールの移行の詳細については、 移行ガイダンスを参照してください。

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

プロジェクト名 説明 メイン ファイル
ExternalizedPolicy4 ExternalizedPolicy4 アクティビティとその WF 4.5 デザイナーが含まれています。 ExternalizedPolicy4.cs: アクティビティ定義。

ExternalizedPolicy4Designer.xaml: ExternalizedPolicy4 アクティビティのカスタム デザイナー。 WF 3.5 ルール エンジンのルール エディター (RuleSetDialog) を使用します。
命令型CodeClientSample 命令型 C# コードを使用して ExternalizedPolicy4 アプリケーションを使用してワークフローを構成して実行するサンプル クライアント アプリケーション (デザイナーは使用しません)。 ApplyDiscount.rules: WF ルール定義を含むファイル。

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

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

App.config: ルール ファイルのパスを含む構成ファイル。
DesignerClientSample WF デザイナーで ExternalPolicy4 アプリケーションを使用してワークフローを構成して実行するサンプル クライアント アプリケーション。 Sequence1.xaml: Policy4 アクティビティを使用してルールの評価を実行するシーケンシャル ワークフロー。

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

ExternalizedPolicy4 の活動

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

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 ファイルへのパス。
ルールセット名 .rules ファイル内で使用する RuleSet の名前。
ターゲットオブジェクト RuleRuleSet オブジェクトを評価する対象のオブジェクトです。
ResultObject ルールが適用された後の結果のオブジェクト (たとえば、Input 引数に対してルールが適用され、結果が Result 引数に格納されます)。
ValidationError 実行前にターゲット オブジェクトに対して RuleSet を検証するときに WF 3.5 ルール エンジンによって返される検証エラーの一覧。

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

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

Policy4 と ExternalPolicy4

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

このサンプルを使用する

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

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

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

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

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

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

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

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

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

  3. Ctrl++キーを押してプロジェクトをコンパイルします。

  4. + F5 キーを押してプロジェクトを実行します。