Halt
Halt 함수를 사용하여 현재 규칙 엔진 실행을 중지할 수 있습니다. Halt 함수는 형식Boolean
의 매개 변수 하나를 사용합니다. 매개 변수의 값을 로 true
지정하면 규칙 엔진은 보류 중인 후보 규칙이 포함된 어젠다도 지웁니다.
Policy.Execute 메서드는 기본적으로 RuleEngine.Execute 메서드를 둘러싼 래퍼입니다. 이 메서드의 코드는 다음과 유사합니다.
RuleEngine.Assert(facts);
RuleEngine.Execute();
RuleEngine.Retract(facts);
Policy.Execute 메서드를 사용하여 정책을 실행하는 경우 규칙 엔진은 Halt 함수가 실행될 때 Control을 Policy.Execute 메서드로 반환합니다. Policy.Execute 메서드는 팩트를 철회하고 호출자에게 컨트롤을 반환합니다. 따라서 중단된 정책 실행은 이 경우 다시 시작될 수 없습니다. 호출 규칙 셰이프를 사용하여 정책을 호출할 때도 마찬가지입니다.
그러나 RuleEngine.Execute 메서드를 직접 사용하여 정책을 실행하는 경우 두 호출 사이에 필요한 개체를 철회하지 않은 경우 RuleEngine.Execute 를 다시 호출하여 다음 보류 중인 규칙 실행으로 중지된 정책 실행을 다시 시작할 수 있습니다. 중지된 정책 실행을 다시 시작하는 샘플 코드는 다음과 같습니다.
//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 메서드를 직접 사용하는 경우 규칙 엔진 인스턴스는 캐시되지 않습니다.