優先度に基づくルール セットの実行
前に説明したように、RuleSet 内のすべてのルールまたは RuleSet 内のルールのサブセットを特定の順序で実行する必要がある場合は、ルールの優先順位フィールドを使用して、順序を正確に定義することができます。これを行うことによって、チェーンの要件を満たす必要がなくなることがよくあるだけでなく、このようなシナリオではチェーンを無効にすることもできます。
Windows Workflow Foundation のフォワード実行メカニズムによって実行順序を定義することが可能ですが、必ずしもこれを定義する必要はありません。多くの場合、フォワード チェーン動作が実行されていれば、RuleSet の正しい結果を得るためにルールの優先順位を割り当てる必要はありません。これは、ルールの依存関係が正しく反映されるように、ルール エンジンによってルール間の関係が自動的に管理されるためです。
この点に関する例を次に示します。
Rule 1
IF this.Weather.Temperature < 50
THEN this.Drink.Style = "Latte"
Rule 2
IF this.Drink.Style == "Latte"
THEN this.Snack.Style = "Scone"
ELSE this.Snack.Style = "Muffin"
Windows Workflow Foundation では、Rule 1 が最初に実行されるように、Rule 1 の優先順位を高くすることができます。これにより、Rule 2 が評価される前に、Drink.Style が確実に設定されます。
ただし、必要な結果を得るために、順序指定は必要ではありません。そこで、Rule 2 が最初に評価されると想定します。この場合、Drink.Style は null または別のスタイルになる可能性があります。そのような場合、Snack.Style は "Muffin" に設定されます。ただし、Rule 1 が実行されて Drink.Style に "Latte" が設定された後、Rule 2 は再評価され、Snack Style は "Scone" に設定されます。基本的に、順序を指定するオプションが利用できますが、ほとんどの場合に順序指定は必要ありません。
ルールに依存関係がある場合にも順序指定が役立ちますが、それが必要でないようなシナリオで、明示的な Update ステートメントまたはメソッドを使用することは望ましくありません。
関連項目
参照
概念
ワークフロー内での RuleSet の使用
RuleSet 内のルール評価
Copyright © 2007 by Microsoft Corporation.All rights reserved.