英語で読む

次の方法で共有


停止

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 メソッドを直接使用すると、ルール エンジン インスタンスはキャッシュされません。

参照

エンジン制御関数