ルール セットのプログラムによる実行
PolicyActivity アクティビティを使って RuleSets を実行するほかに、RuleSet の中でプログラムによってルールを実行して評価することもできます。たとえば、(ワークフローまたは他の種類の) アクティビティに対してアクティビティ コード内部から RuleSet を実行するとします。次のコードは、その方法を示しています。
RuleValidation validation = new RuleValidation(typeof(customActivity),
null);
// "this" in the call below refers to the activity instance.
RuleExecution execution = new RuleExecution(validation, this);
customRuleSet.Execute(execution);
一般に、ワークフロー内でルールを使用する場合は、RuleExecution インスタンスの作成時に ActivityExecutionContext も渡します。コンテキストを提供する主な利点は、ホストの追跡元にルール例外情報を送信できる点です。
また、RuleEngine オブジェクトを直接使って RuleSet オブジェクトを実行することもできます。次のコードは、その方法を示しています。
RuleValidation validation = new RuleValidation(typeof(customActivity),
null);
// "this" in the call below refers to the activity instance.
RuleEngine engine = new RuleEngine(customRuleSet, validation);
engine.Execute(this);
特定の種類に対してルール セットを検証するだけであれば (たとえば、ルールで参照されているすべてのメンバが含まれるかどうか)、次のように表現できます。
bool result = myRuleSet.Validate(validation);
Validate メソッド呼び出しの結果は、RuleSet が有効であれば true です。RuleValidation インスタンスには、検証エラーを含む Errors プロパティがあります。
メモ : |
---|
また、ワークフローの外部で RuleSets を使用することもできます。任意の .NET Framework 型に対して、RuleSet を作成することができます。 |
関連項目
参照
RuleSet
Validate
RuleValidation
RuleExecution
ActivityExecutionContext
PolicyActivity
概念
Copyright © 2007 by Microsoft Corporation.All rights reserved.