次の方法で共有


高度なポリシーのサンプル

Download sample

このサンプルは、単純なポリシーのサンプルを拡張するものです。単純なポリシーのサンプルに含まれる個人向け割引ルールとビジネス割引ルールの他に、新しいルールがいくつか追加されています。

高額な注文に対する割引額を大きく設定する、高額ルールが追加されています。このルールの優先順位の値は前の 2 つのルールより小さいので、割引フィールドを上書きし、個人向けおよびビジネス向けの割引ルールより優先されます。

割引レベルに基づいて合計額を計算する、合計の計算ルールも追加されています。ワークフロー アクティビティに定義されたメソッドの参照方法と、他のアクションの使用方法を示します。また、このルールは、割引フィールドが変更されるたびに評価されるため、チェーン動作についても示します。さらに、メソッドに対する属性の適用についても、CalculateTotal メソッドに RuleWriteAttribute 属性を適用する例で示します。これにより、メソッドが実行されるたびに、影響を受けるルール (ErrorTotalRule) が再評価されます。

追加されている最後のルールは、エラー検出です (ここでは、合計が 0 未満)。エラーが検出されると、ポリシーの実行は停止されます。

最後に、Console.Writeline 呼び出しがアクションとして各ルールに追加されています。これは、ルール実行についての詳細を表示できるようにするため、また、参照型の静的メソッドにアクセスできることを示すためのものです。実行されるルールについての詳細を表示するには、追跡を使用することもできます。例については、RuleActionTrackingEvent サンプルを参照してください。

このサンプルで使用されているルールを次に示します。

ResidentialDiscountRule:

IF OrderValue > 500 AND CustomerType OrderValue = Residential

THEN Discount = 5%

BusinessDiscountRule:

IF OrderValue > 10000 AND CustomerType OrderValue = Business

THEN Discount = 10%

HighValueDiscountRule:

IF OrderValue 20000 >

THEN Discount = 15%

TotalRule:

IF Discount > 0

THEN CalculateTotal(OrderValue, Discount)

ELSE Total = OrderValue

ErrorTotalRule:

IF Total < 0

THEN Error = "Fired ErrorTotalRule"; Halt

ルールの評価と実行は、トレースと追跡で確認することもできます。詳細については、「RuleActionTrackingEvent サンプル」を参照してください。

サンプルをビルドするには

  1. このトピックの [サンプルのダウンロード] をクリックしてサンプルをダウンロードします。

    これにより、サンプル プロジェクトがローカル コンピュータのハード ディスクにダウンロードされます。

  2. [スタート] ボタンをクリックし、[すべてのプログラム] をポイントします。次に、[Microsoft Windows SDK] をポイントし、[CMD シェル] をクリックします****。

  3. サンプルのソース ディレクトリに移動します。

  4. コマンド プロンプトで「MSBUILD <ソリューション ファイル名>」と入力します。

サンプルを実行するには

  • [SDK コマンド プロンプト] ウィンドウで、AdvancedPolicy\bin\debug フォルダ (このサンプルの VB のバージョンでは、AdvancedPolicy\bin フォルダ) にある .exe ファイルを実行します (このサンプルでは、メイン フォルダの下にあります)。

関連項目

参照

RuleSet
PolicyActivity

その他の技術情報

簡単なポリシーのサンプル
Tutorial: Use Rules and Conditions
Using the PolicyActivity Activity
アクティビティのサンプル
Windows Workflow Foundation のサンプル

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.