다음을 통해 공유


Ops 어댑터 사용

비즈니스 프로세스 관리 솔루션은 Ops 어댑터를 사용하여 새 오류 보고 기능에서 오류 보고를 처리합니다. 사용자가 손쉽게 자체적으로 쓰고 다른 솔루션에서 어댑터를 사용할 수 있기는 하지만, 솔루션에는 어댑터로부터의 메시지를 처리하는 샘플 처리기가 포함되어 있습니다. 오류 보고 기능에 대한 자세한 내용은 실패한 메시지 라우팅 사용을 참조하세요.

참고

솔루션이 오류 보고를 위해 어댑터를 사용하기는 하지만 그 사용이 오류 처리에만 제한되는 것은 아닙니다. 메시지에 대한 응답으로 특정 개체 메서드를 실행하려고 할 때마다 다양한 환경에서 어댑터를 사용할 수 있습니다.

Ops 어댑터가 오류 보고서를 처리하는 방법

오류 보고를 사용하는 솔루션의 포트는 궁극적으로 오류 메시지를 BizTalkErrors-SP 포트로 보냅니다. 포트의 필터는 ErrorReport.ErrorType 컨텍스트 속성이 있는지 테스트합니다. 오류 보고서 메시지에만 이 컨텍스트 속성이 있습니다.

BizTalkErrors-SP 송신 포트는 XML 어셈블러 구성 요소를 사용하여 메시지를 봉투에 넣는 파이프라인을 통해 오류 메시지를 실행합니다. 그러면 메시지는 Ops 어댑터로 이동합니다.

ErrorEnvelope 스키마에 의해 정의된 봉투(Envelope)는 어떤 메시지 유형도 허용하도록 표시됩니다. 단 "어떤"은 BizTalk 그룹에 정의된 메시지 유형을 의미합니다. 이에 따라 솔루션이 알 수 없는 메시지 유형을 수신할 경우에는 일시 중단된 메시지를 생성할 수 있습니다. 이러한 메시지는 오류를 생성하고 BizTalkErrors-SP 포트로 라우팅됩니다. 또한 메시지는 알려진 메시지 유형이 아니므로 파이프라인의 XML 어셈블러 구성 요소에서 오류를 생성합니다. 파이프라인 오류는 메시지를 일시 중단합니다.

참고

알 수 없는 메시지 유형으로 인한 라우팅 오류를 처리하려면 사용자 지정 파이프라인 구성 요소를 작성하고 BizTalkErrors-SP 포트에 대한 사용자 지정 파이프라인에서 구성 요소를 사용해야 합니다. 사용자 지정 구성 요소는 XML 어셈블러 구성 요소를 대체합니다. 사용자 지정 구성 요소는 ErrorReport 속성을 봉투 헤더에 넣고 봉투 본문에 메시지를 추가해야 합니다.

Ops 어댑터는 트랜잭션의 단방향 송신 어댑터입니다. 어댑터가 메시지를 처리할 때, 필요하면 지정된 어셈블리를 먼저 로드합니다. 어댑터는 각 호출에 대해 어셈블리를 로드하는 오버헤드를 피하기 위해 메모리에 어셈블리를 캐시합니다. 그런 다음 지정된 클래스의 instance 만든 다음 리플렉션을 사용하여 IOpsAIC 인터페이스를 구현하는 어셈블리의 개체를 가져옵니다. 이 모든 것이 성공하면 어댑터는 Initialize 메서드를 호출한 다음 Execute 메서드를 호출하여 오류 보고서 메시지를 전달합니다.

Execute를 호출하는 동안 오류가 발생하면 어댑터가 메시지를 다시 제출합니다. 지정된 클래스가 IOpsAIC 인터페이스를 구현하지 않거나 클래스 또는 어셈블리를 찾을 수 없는 경우 어댑터는 메시지를 일시 중단합니다.

어댑터가 리플렉션을 사용하기 때문에 클래스를 포함하는 어셈블리는 GAC(전역 어셈블리 캐시)에 있어야 합니다.

IOpsAIC 인터페이스

어댑터에는 IOpsAIC 인터페이스를 구현하는 개체가 필요합니다. 이 인터페이스는 다음과 같이 나타납니다.

interface IOpsAIC  
{  
    void Initialize(string config);  
    void Execute(byte[] message);  
}  

어댑터는 원래 메시지를 바이트 배열로 Execute 메서드에 전달합니다.

어댑터 구성

다른 어댑터와 마찬가지 방식으로 어댑터를 구성합니다. 다음 표에는 어댑터의 구성 속성이 나와 있습니다.

표시 이름 Description
.NET 어셈블리 강력한 이름 어셈블리의 정규화된 이름
OpsAIC 클래스 이름 IOpsAIC 인터페이스를 구현하는 어셈블리 내의 클래스 이름입니다.
초기화 데이터 클래스의 Initialize 메서드에 인수로 전달되는 문자열입니다.

어댑터에는 어셈블리의 정규화된 이름이 필요합니다. 정규화된 이름은 GADC에 추가할 때 어셈블리에 지정되는 이름으로, 어셈블리 이름, 버전, Culture 및 공개 키 토큰을 포함하는 문자열입니다. 어셈블리의 정규화된 이름은 전역 어셈블리 캐시 도구인 gacutil.exe를 사용하여 확인할 수 있습니다.

정규화된 어셈블리 이름에 대한 자세한 내용은 .NET Framework 개발자 가이드에서 "어셈블리 이름"을 참조하십시오. gacutil.exe 대한 자세한 내용은 .NET Framework 개발자 가이드의 "전역 어셈블리 캐시 도구(Gacutil.exe)"를 참조하세요.

클래스 이름과 함께 네임스페이스를 제공해야 합니다. 예를 들어 클래스가 OperationsHandler 네임스페이 스의 OpsHandler 인 경우 클래스 이름을 OperationsHandler.OpsHandler로 지정합니다.

참고 항목

Ops 어댑터