복구 및 다시 전송 사용자 지정 예외 처리기 샘플 실행
사용자 지정 예외 처리기 복구 및 다시 제출 샘플은 사용자 개입을 ESB 및 Microsoft BizTalk 기반 애플리케이션 프로세스에 통합하고 유용한 디자인 패턴을 구현하는 매우 효과적인 기술을 보여 줍니다. 샘플 코드는 ESB 예외 관리 시스템에 원활하게 통합됩니다.
샘플에서는 오케스트레이션에서 사용자 지정 예외 처리기를 사용하는 방법을 보여줍니다. 오케스트레이션(EAIProcess.odx)의 프로세스에서 오류가 발생하면 예외 처리기가 ESB 오류 메시지를 생성하고 게시합니다. 이 오류 메시지는 페이로드에 예외가 발생했을 때 "진행 중"이었던 메시지(BizTalk 관련 컨텍스트 속성 포함)와 BizTalk 오케스트레이션 엔진에서 catch한 현재 System.Exception instance 포함합니다. 이 경우 "거부됨" 메시지와 "승인됨" 메시지가 오류 메시지와 함께 유지됩니다.
분리된 방식으로 배포되고 사용자 지정 예외 처리기 역할을 하는 EAIProcessHandler.odx라는 두 번째 오케스트레이션은 EAIProcess.odx 오케스트레이션에서 생성된 특정 오류 코드를 구독하고 오류 메시지를 사용합니다. 이 예외 처리기는 원래 메시지(형식화된 문서)를 추출하고 System.Exception 인스턴스는 원래 오류 메시지에 유지됩니다.
이제 원본 메시지를 모든 원래 컨텍스트 속성으로 처리할 수 있습니다. 사용자 지정 예외 처리기(EAIProcessHandler.odx)는 다음 위치에 있는 파일 시스템에 "거부됨" 및 "승인됨" 메시지를 모두 씁니다.
승인된 메시지:
- \Source\Samples\Exception Handling\Test\Filedrop\EAIProcess.PostApproval
복구 및 다시 제출에 대한 메시지가 거부되었습니다.
- \Source\Samples\Exception Handling\Test\Filedrop\EAIProcessHandler.RepairSubmit
거부된 메시지:
- \Source\Samples\Exception Handling\Test\Filedrop\EAIProcessHandler.PostDecline
예외 처리기는 Microsoft InfoPath 처리 명령을 사용하여 복구 및 파일 시스템에 다시 제출하기 위해 "거부됨" 메시지를 직렬화합니다. InfoPath 템플릿을 사용하면 사용자가 양식을 편집하고 메시지의 유효성을 검사하는 EAIProcess.odx 오케스트레이션을 시작하는 결과를 다시 제출할 수 있습니다(그림 1 참조).
복구
그림 1
InfoPath 복구 및 다시 제출 템플릿에서 생성된 테스트 메시지
또한 ALL이라는 일반 송신 포트가 있습니다. GlobalFaultProcessor 파이프라인을 사용하도록 구성된 Exceptions_FILE. 이 포트는 BizTalk 실패 메시지 라우팅 메시지와 ESB 오류 메시지 모두 시스템의 모든 예외를 구독합니다. 예외 관리 프레임워크는 모두 단일 형식으로 정규화하고 InfoPath 처리 명령을 사용하여 \Source\Samples\Exception Handling\Test\Filedrop\All_Exceptions 폴더로 직렬화합니다.
설치
모든 예외 관리 샘플은 동일한 핵심 서비스 및 BizTalk 애플리케이션 아티팩트 집합을 사용합니다. 따라서 모든 예외 관리 샘플을 실행할 수 있도록 예외 관리 샘플 아티팩트만 한 번만 설치해야 합니다. 예외 관리 샘플을 설치하는 방법에 대한 자세한 내용은 예외 관리 샘플 설치를 참조하세요.
예제 응용 프로그램 실행
사용자 지정 예외 처리기 복구 및 다시 제출 샘플을 실행하려면
이 샘플을 처음으로 실행하기 전에 수신 위치 및 송신 포트 URL이 \Source\Samples\Exception Handling\Test\Filedrop 폴더의 적절한 디렉터리를 가리키는지 확인합니다. 수신 위치는 EAIProcess.RequestPort 폴더를 지정해야 하며 송신 포트 URL은 EAIProcess.PostApproval 및 EAIProcessHandler.PostDecline 폴더를 지정해야 합니다.
GlobalBank.ESB 애플리케이션이 아직 실행되고 있지 않은 경우 BizTalk 관리 콘솔을 사용하여 시작합니다.
\Source\Samples\Exception Handling\Test\Data 폴더에 있는 Request_EAIProcessHandler.xml 샘플 파일을 \Source\Samples\Exception Handling\Test\Filedrop\EAIProcess.RequestPort의 EAIProcess.RequestPort_FILE 수신 위치에 지정된 폴더에 복사하여 샘플을 시작합니다.
EAIProcessHandler.PostDecline이라는 폴더를 엽니다(\Source\Samples\Exception Handling\Test\Filedrop 폴더). 예외 처리 오케스트레이션에서 생성된 "거부됨*" 메시지가 표시됩니다.
EAIProcessHandler.RepairSubmit 폴더를 엽니다(\Source\Samples\Exception Handling\Test\Filedrop 폴더). 예외 처리 오케스트레이션에서 생성된 "RepairSubmit" 메시지가 표시됩니다.
RepairSubmit 파일을 두 번 클릭하여 적절한 InfoPath 템플릿에서 엽니다. 편집하고 다시 제출할 준비가 된 메시지가 표시됩니다.
단가 필드의 값을 0에서 2로 변경한 다음 InfoPath 양식의 도구 모음에 있는 제출 단추를 클릭하여 편집한 문서를 BizTalk에 다시 제출하여 처리합니다. 제출 프로세스는 BizTalk로 구성된 HTTP 수신 위치를 사용합니다.
EAIProcess.PostApproval 폴더(\Source\Samples\Exception Handling\Test\Filedrop 폴더)로 이동합니다. 이제 단가에 대한 업데이트된 값이 포함된 "승인*" 문서가 표시됩니다.
샘플 작동 방식
제출하는 메시지는 EAIProcess 오케스트레이션을 활성화합니다. EAIProcess 오케스트레이션이 메시지를 처리하면 1을 단가로 나누려고 시도합니다. 단가가 0이므로 0으로 나누기 예외가 발생합니다. 오케스트레이션의 이벤트 처리기의 코드는 이 예외를 catch하고 오류 메시지를 만듭니다. 메시지의 주문 수량이 10보다 크므로 비즈니스 논리는 이 예외에 FaultCode 필드 값이 1000임을 지시합니다.
EAIProcess 오케스트레이션은 직접 바인딩된 포트를 통해 BizTalk 메시지 상자에 오류 메시지를 게시하고 오케스트레이션이 종료됩니다.
FaultCode 필드 값이 1000인 메시지를 구독하는 EAIProcessHandler라는 사용자 지정 오류 처리기 오케스트레이션이 새 오류 메시지를 선택합니다. 오케스트레이션의 코드는 "거부됨" 메시지와 InfoPath 파일을 만든 다음 이를 EAIProcessHandler.PostDecline 및 EAIProcessHandler.RepairSubmit 폴더에 배치합니다.