다음을 통해 공유


BAM 인터셉터란?

개요

BAM 인터셉터는 대상 데이터를 캡처하도록 응용 프로그램을 작동하는 데 사용하는 개체입니다. 다음 다이어그램은 BAM 인터셉터의 역할과 다른 BAM 구성 요소와의 상호 작용을 보여 줍니다.

BAM 인터셉터의 역할과 다른 BAM 구성 요소와의 상호 작용을 보여 주는 이미지입니다.
BAM 인터셉터

대상 데이터가 있을 수 있는 응용 프로그램의 각 단계에서 OnStep 인터셉터를 호출하고, 단계에 대한 식별자를 제공하며, 응용 프로그램에서 사용 중인 일부 데이터 또는 임의 개체를 제공합니다.

콜백이 발생할 때 콜백 프로시저가 현재 단계 ID와 데이터 개체를 가져올 수 있도록 콜백 함수를 구현해야 합니다. 기본적으로 BAM 인터셉터는 단순히 데이터 개체를 콜백으로 전파합니다. 실질적인 데이터 추출 논리는 응용 프로그램에 포함되어 있습니다. 예를 들어 데이터가 XML 형식의 메시지를 받아들이면 콜백은 XPath를 사용합니다. XPath에 대한 자세한 내용은 메시지 할당에서 XPath 사용을 참조하세요.

BAM 인터셉터는 프로그래밍 방식으로 만들 수 있는 구성에 따라 각 단계에서 요청할 데이터를 결정합니다. 그런 후 가져온 데이터를 사용하여 보유하고 있다가 매번 OnStep에 인수로 전달해야 하는 DirectEventStream 또는 BufferedEventStream을 호출합니다.

단계마다 인터셉터를 호출해도 리소스를 많이 소비하지 않습니다. 이 단계에서 아무 것도 호출 및 등록하지 않으면 인터셉터는 즉시 반환됩니다. 즉, 디스크 작업 및 트랜잭션은 물론 메모리 할당도 전혀 발생하지 않으며 성능에도 영향을 미치지 않습니다. 그렇지만 필요한 경우 BAM에서 데이터를 모두 추출할 수 있습니다. 데이터 추출 및 데이터 가용성과 관련된 단계에 대한 성능 영향은 의 IBAMDataExtractor Interface구현에 따라 달라집니다.

다음 코드 예제는 구성 타임과 런타임에 인터셉터의 사용 방법을 보여 줍니다.

구성 타임

다음 코드에서는 인터셉터가 응용 프로그램의 recvPO 단계에서 중지된 후 Customer Name 및 Customer SSN을 요청하도록 구성하는 방법을 보여 줍니다.

ActivityInterceptorConfiguration cfg= new ActivityInterceptorConfiguration ("PurchaseOrder");  
...  
cfg.RegisterDataExtraction("CustomerName",recvPO,XpathName);  
cfg.RegisterDataExtraction("CustomerSSN",recvPO,XpathSSN);  
...  
BAMInterceptor interceptor=new BAMInterceptor();  
cfg.UpdateInterceptor(interceptor);  
...  
// The interceptor instance is ready.  

인터셉터 인스턴스를 만든 후에 나중에 런타임에 사용하도록 저장할 수 있습니다.

BAM용 데이터 및 마일스톤에 대해 다른 기본 설정을 나타내는 여러 인터셉터를 미리 만들어 놓을 수 있습니다. 최상의 성능을 위해서는 BinaryFormatter 클래스를 사용하여 인터셉터 인스턴스를 serialize합니다.

실행 시간

다음 코드를 사용하여 프로덕션 환경에서 런타임에 인터셉터를 사용할 수 있습니다.

// Deserialize the Interceptor that was prepared before  
...  
es=new DirectEventStream(...)  
...  
Interceptor.OnStep(recvPO, data1, es, callback)  
...  
Interceptor.OnStep(approvePO, data2, es, callback)  
...  

위치:

  • recvPOapprovePO 는 애플리케이션의 단계를 식별하는 데 사용하는 임의의 개체입니다.

  • data1data2 는 해당 시점에 있는 임의의 개체이며 흥미로운 데이터(예: 구매 주문의 XML 문서)를 포함할 수 있습니다.

  • es 는 성능 요구 사항에 따라 DirectEventStream 또는 BufferedEvent 스트림입니다.

  • 콜백 은 의 구현입니다 IBAMDataExtractor Interface.

    SDK 샘플인 BAM API(BizTalk Server 샘플)는 구성 도구와 예제 런타임 애플리케이션을 모두 포함하는 인터셉터를 사용하는 방법을 보여 줍니다.

    BizTalk 오케스트레이션 엔진은 가로채기를 허용하여 런타임에 BAM에서 수집되는 데이터를 추적 프로필 편집기를 사용하여 변경할 수 있도록 합니다.

섹션 내용

참고 항목

BAM API(BizTalk Server 샘플)