停止
Halt 関数を使用すると、現在のルール エンジンの実行を停止できます。 Halt 関数は、 型Boolean
のパラメーターを 1 つ受け取ります。 パラメーターの値を として true
指定すると、保留中の候補ルールを含む議題もルール エンジンによってクリアされます。
Policy.Execute メソッドは、基本的には RuleEngine.Execute メソッドのラッパーです。 これは、次のようなコードになります。
RuleEngine.Assert(facts);
RuleEngine.Execute();
RuleEngine.Retract(facts);
Policy.Execute メソッドを使用してポリシーを実行すると、Halt 関数の実行時にルール エンジンから Policy.Execute メソッドに制御が返されます。 Policy.Execute メソッドはファクトを取り消し、呼び出し元に制御を返します。 したがって、この場合停止したポリシーの実行は再開できません。 [ ルールの呼び出し ] 図形を使用してポリシーを呼び出すと、同じことが発生します。
ただし、 RuleEngine.Execute メソッドを直接使用してポリシーを実行する場合は、 RuleEngine.Execute をもう一度呼び出すだけで、次の保留中のルールが発生して停止したポリシーの実行を再開できます (2 つの呼び出しの間に必要なオブジェクトを取り消さなかった場合)。 停止したポリシーの実行を再開するコード例を次に示します。
//assert facts into working memory of the rule engine instance
RuleEngine.Assert(facts);
//execute the policy
RuleEngine.Execute();
//policy invokes the Halt method when executing actions.
//control is returned to here when the Halt method is invoked
//when engine is halted do the following
//Add your code here
//To resume the halted rule engine execution
RuleEngine.Execute();
//retract or remove facts frm the working memory of the rule engine
RuleEngine.Retract(facts);
Policy.Execute メソッドは、パフォーマンスを向上させるためにルール エンジン インスタンスをキャッシュします。 RuleEngine.Execute メソッドを直接使用すると、ルール エンジン インスタンスはキャッシュされません。