RuleSet 内のルール評価
Windows Workflow Foundation では、次の 2 つの主要な方法でルール テクノロジが公開されます。
アクティビティの条件として。
PolicyActivity アクティビティ内のフォワード チェーン ルール セットとして。
フォワード チェーンについてはこのセクションの後の部分で説明しますが、要約すると、1 つのルールのアクションに応じて、そのルールに依存する別のルールの再評価が実行されるようにする機能です。
開発者にとって、コード条件の代わりにルール条件を使用する主な理由は、ルール条件がモデルの一部分となるため、ワークフロー インスタンスを実行する際、実行時に動的に更新できるということです。ルール条件がモデルの一部となることの 2 番目の利点は、そのモデルに基づいてさらに高度なツールを構築し、追加の作成機能や依存関係の管理、複数条件での分析などを提供できることにあります。
PolicyActivity アクティビティは、RuleSet の定義と実行をカプセル化します。RuleSet は、実行セマンティクスのセットを伴うルール コレクションです。一方、ルールは、ワークフロー メンバを操作する If-Then-Else 式です。
ルールの評価
RuleSet 内の各ルールには、優先順位値 (既定値は 0) があります。RuleSet 内のルールは、優先順位値に従って並べ替えられたコレクションのようなものです。Windows Workflow Foundation のルール エバリュエータは各ルールを個別に評価し、ルール条件の評価結果に基づいてルールのアクションを実行します。
評価メカニズムの概念は、次のように表されます。
最初に、アクティブなルールのリストを取得します。
優先順位の最も高いルールを見つけます。
そのルールを評価し、Then/Else アクションを適切に実行します。
リスト内の上位にある (優先順位がより高い) 1 つまたは複数の条件によって使用されるフィールドまたはプロパティが、ルールのアクションによって更新された場合には、これらの上位ルールを再評価します。
メモ : 特定の依存関係を持つルールだけが再評価されます。
RuleSet 内のすべてのルールが評価されるまで (または Halt が実行されるまで) この手順を続行します。
次の概念的な例では、次のようなルール セットを想定します。"A"、"B" などはワークフロー内のデータを表します。
Rule 4 (Priority = 4)
IF A = 15
THEN B = 5
Rule 3 (Priority = 3)
IF C = 5
THEN B = 10
Rule 2 (Priority 2)
IF D = 2
THEN A = 15
Rule 1 (Priority 1)
IF B = 5
THEN E = 7
次のような入力データがあるとします。
A = 0
B = 0
C = 5
D = 2
E = 0
評価は、次のように続行されます。
Rule 4 が偽と評価され、Rule 4 には Else アクションがないため、アクションは何も実行されません。
Rule 3 が真と評価され、アクションが実行されて B = 10 に設定されます。Rule 4 は B の値に依存しないため、Rule 2 の評価に進みます。
Rule 2 が真と評価され、アクションが実行されて A = 15 に設定されます。
Rule 3 と 2 の条件は A の値に依存しないため、これらのルールは再評価されません。ただし、Rule 4 の条件は A の値を使用するため、再評価されます。その結果、真と評価され、アクションが実行されて B = 5 に設定されます。Rule 4、3、および 2 は B の値に依存しないため、Rule 1 の評価に進みます。
Rule 1 が真と評価され、アクションが実行されて E = 7 に設定されます。
この結果、データ セットは次のようになります。
A = 15
B = 5
C = 5
D = 2
E = 7
関連項目
参照
RuleSet
PolicyActivity
RuleSet
概念
ルール条件ワークフローの変更
ワークフロー内での RuleSet の使用
Copyright © 2007 by Microsoft Corporation.All rights reserved.