ExceptionHandler 오케스트레이션
비즈니스 프로세스 관리 솔루션은 시스템 예외 및 애플리케이션 예외라는 두 가지 종류의 예외를 사용합니다. 시스템 예외에는 네트워크 연결 실패와 같은 리소스 오류가 포함됩니다. 일정한 간격 후에 문제가 저절로 해결될 수도 있으므로 솔루션은 시스템 예외를 생성하는 모든 작업을 다시 시도합니다. 응용 프로그램 예외는 논리 오류나 특정 형식의 비일관성 같이 저절로 해결되지 않는 문제로 인해 생성됩니다. 솔루션은 ExceptionHandlerOrch 오케스트레이션을 사용하여 시스템 및 애플리케이션 오류를 모두 처리합니다.
주문 처리 단계(CableOrder1, CableOrder2) 및 위성 오케스트레이션(활성화, 분석, 취소, 변경, 완료, 유효성 검사)은 모두 ExceptionHandlerOrch를 사용합니다.
참고
Microsoft Visual Studio에서 ExceptionHandlerOrch 오케스트레이션이 열려 있는 상태에서 이 섹션을 읽을 수 있습니다.
애플리케이션 오류
예외 처리기는 먼저 Utilities 어셈블리에서 ErrorHandler 개체의 PostError 메서드를 호출하여 오류를 기록합니다. 그런 다음 예외 핸들러는 오류가 시스템 오류인지, 아니면 응용 프로그램 오류인지를 테스트합니다. 다음 스크린 샷은 응용 프로그램 예외를 처리하는 오케스트레이션 분기를 보여 줍니다.
애플리케이션 분기
애플리케이션 오류의 경우 오케스트레이션은 오류를 설명하는 문자열을 생성하고 ErrorHandlerOrch 오케스트레이션을 호출합니다. 이 오케스트레이션은 오류를 작업으로 보내며, 이 작업에서 운영자가 오류를 해결할지, 아니면 작업을 종료할지를 결정합니다. 운영자가 오류를 해결하면 복구된 메시지가 ErrorHandlerOrch 오케스트레이션에서 반환되고 작업이 다시 시도됩니다. 예외 처리기는 Utilities 어셈블리에서 Recaller 개체의 Invoke 메서드를 호출하여 이 작업을 수행합니다. Recaller 개체는 리플렉션을 사용하여 오류를 발생시킨 코드를 호출합니다.
Invoke 호출이 성공하면 예외 처리기가 종료됩니다. 그렇지 않으면 루프백되고 호출 을 다시 시도합니다. Recaller 개체에 대한 자세한 내용은 Recaller 개체를 참조하세요.
시스템 오류
다음 다이어그램은 ExceptionHandler 오케스트레이션의 시스템 오류 분기를 보여 줍니다.
의 시스템 오류
시스템 오류의 경우 예외 처리기는 먼저 CheckInterrupt 오케스트레이션을 호출한 다음 1분 동안 기다립니다. 이 대기 시간 동안 네트워크 연결 문제와 같은 일시적인 단기 오류가 해결되고, 다시 호출이 시도됩니다. 원격 호출을 수행하는 경우 항상 네트워크 문제가 발생할 수 있습니다.
참고
인터럽트 가능한 디자인에서는 일반적으로 대기 기간 중이나 직후에 인터럽트를 테스트하여 인터럽트가 발생했는지 확인합니다.
대기 후 처리기는 Recaller 개체의 Invoke 메서드를 사용하여 원래 코드를 실행합니다. 호출에 성공하면 핸들러가 종료됩니다. 그렇지 않으면 핸들러가 원본 코드 실행을 두 번 더 시도합니다. 세 번의 시도가 모두 실패하면 처리기는 오류 문자열을 생성하고 ErrorHandlerOrch 오케스트레이션을 호출합니다.
시스템 예외를 처리할 때 예외가 발생하는 경우 예외 블록이 해당 예외를 catch합니다.
시스템 오류 분기
예외 핸들러는 예외 유형을 테스트하고 시스템 예외인 경우 다시 시도 카운터를 감소시키거나 플래그를 설정하여 응용 프로그램 예외를 표시합니다.
ErrorHandlerOrch 오케스트레이션
다음 다이어그램은 ErrorHandlerOrch 오케스트레이션의 첫 번째 부분을 보여줍니다.
ErrorHandlerOrch 오케스트레이션은 먼저 IsBadOrder 매개 변수를 테스트하여 오류가 잘못된 순서(IsBadOrder가 true) 또는 다른 오류인지 확인합니다. 오류가 잘못된 주문인 경우 오케스트레이션은 원래 주문 반송 주소에서 보낸 메시지의 대상을 할당하고 메시지를 다시 고객 서비스 시스템으로 보냅니다. 오류가 잘못된 주문이 아닌 경우 오케스트레이션은 주문 오류 메시지를 만들어 운영 체제로 보냅니다.
이러한 오류가 발생한 후 오케스트레이션은 응답 메시지나 인터럽트 메시지를 수신 대기합니다.
오케스트레이션이 응답을 수신할 경우 호출자에게 반환됩니다. 오케스트레이션이 인터럽트 메시지를 받으면 메시지를 인터럽트 포트에 전달하고 사용자 지정 InterruptException을 throw합니다.
솔루션에서 인터럽트 사용 및 처리 방법에 대한 자세한 내용은 비즈니스 프로세스 관리 솔루션의 인터럽트 처리를 참조하세요.
참고 항목
비즈니스 프로세스 관리 솔루션의 예외 처리
사용자 지정 예외
비즈니스 프로세스 관리 솔루션의 인터럽트 처리
Recaller 개체