PolicyFetchErrorHandler 대리자의 인스턴스를 매개 변수로 정책 클래스의 오버로드된 생성자에 전달할 수 있습니다. 데이터베이스에서 정책 세부 정보를 가져오는 동안 오류가 발생하면 대리자 인스턴스가 호출됩니다. try-catch 블록을 사용하여 규칙 엔진이 규칙 엔진 데이터베이스에 연결하지 못할 때 발생하는 RuleStoreConnectionException 및 RuleStoreCompatibilityException 예외를 트래핑할 수도 있습니다.
PolicyFetchErrorHandler 대리자의 인스턴스를 정책 생성자에 매개 변수로 전달하지 않거나 오케스트레이션에서 CallRules 셰이프를 사용하는 경우 데이터베이스에서 정책 세부 정보를 가져오는 동안 오류가 발생하면 다음 이벤트가 발생합니다.
규칙 엔진은 HKEY_LOCAL_MACHINE\Software\Microsoft\BusinessRules\3.0PolicyFetchErrorHandlerAssembly 및 PolicyFetchErrorHandlerClass 레지스트리 항목의 값을 사용합니다. PolicyFetchErrorHandlerAssembly 및 PolicyFetchErrorHandlerClass 레지스트리 항목의 기본값은 각각 Microsoft.BizTalk.RuleEngineExtensions 및 Microsoft.BizTalk.RuleEngineExtension.ExceptionHelper입니다.
ExceptionHelper 클래스는 IPolicyFetchErrorMaker 인터페이스를 구현합니다.
규칙 엔진은 IPolicyFetchErrorMaker 인터페이스에서 get_ErrorHandler 메서드를 호출하여 오류 처리 메서드에 대한 포인터를 가져와서 호출합니다.
기본 오류 처리 메서드는 BTSDBAccessor.dll정의된 SetDBFailure 메서드를 호출합니다.
SetDBFailure 메서드를 사용하면 BizTalk 서비스가 종료됩니다. BizTalk 서비스는 1분 후에 다시 시작되고 데이터베이스를 계속 사용할 수 없으면 종료됩니다. 이 주기는 데이터베이스를 사용할 수 있게 될 때까지 반복됩니다.