영어로 읽기

다음을 통해 공유


활동 사용

BAM을 사용하는 가장 간단한 방법은 BAM API를 사용하여 명시적인 마일스톤 또는 데이터를 보내는 것입니다. BAM 활동은 실제 작업 단위와 동기화하여 유지되는 SQL 테이블의 레코드 정도로 생각할 수 있습니다.

  • 각 새 작업 단위를 호출 BeginActivity 합니다.

  • 작업이 완료되고 이 작업 단위의 컨텍스트에서 더 이상 이벤트가 발생하지 않을 때 를 호출 EndActivity 합니다.

  • 구현의 중요한 위치에서 Microsoft.BizTalk.Bam.EventObservation.EventStream.UpdateActivity 를 호출하여 정보 작업자에게 유용한 데이터 및 마일스톤을 보냅니다.

중요

이벤트 스트림은 삭제하기 전에 플러시해야 합니다. EventStream 개체는 삭제될 때 데이터의 자동 플러시를 수행하지 않습니다. 즉, 일반적으로 활동 처리를 완료한 후에만 스트림을 플러시하도록 작성되는 코드를 사용하면 플러시 호출 이전에 예외가 발생하는 경우 데이터가 손실될 수 있습니다.

데이터 손실을 방지하려면 아래의 의사 코드처럼 try/finally 블록에서 처리를 캡슐화하고 플러시하는 것이 좋습니다.

BufferedEventStream es = new BufferedEventStream(…)  
Try  
{  
   // Do the activity processing here.  
}  
Finally  
{  
   if (es != null ) es.Flush();  
}  

다음 예제 코드는 작업 단위가 Purchase Order인 경우 BeginActivity, UpdateActivity 및 EndActivity를 사용하는 방법을 보여 줍니다. 이 예제에서는 문자열 변수 poid 가 프로세스에서 현재 구매 주문을 식별한다고 가정합니다.

using Microsoft.BizTalk.BAM.EventObservation;  
...   
EventStream es=new DirectEventStream(connectionString,1);  
...  
// At the beginning of the processing of a new work:  
//    Here poid is a string variable that has the current   
//    Purchase Order identifier (e.g. PO number)  
es.BeginActivity("PurchaseOrder",poid);  
es.UpdateActivity("PurchaseOrder",poid,  
    "POReceived",DateTime.UtcNow,  
    "POAmount",100,  
    "CustomerName",""Joe",  
    "CustomerCity","Seattle");  
...  
// few days later  
es.UpdateActivity("PurchaseOrder",poid,  
    "POApproved",DateTime.UtcNow,  
    "ProductName","Widget");  
...  
// and another few days later  
es. UpdateActivity("PurchaseOrder",poid,  
    "POShipped",DateTime.UtcNow);  
...  
// and finally  
es. UpdateActivity("PurchaseOrder",poid,  
    "Delivered",DateTime.UtcNow);  
es.EndActivity("PurchaseOrder",poid);  

참고 항목

이벤트 스트림을 사용하여 BAM 활동 구현
활동 연속
BAM 동적 인프라
BAM API(BizTalk Server 샘플)