다음을 통해 공유


활동 Continuation

비즈니스 활동이라고도 하는 BAM 활동은 유형이 다른 여러 응용 프로그램에 스팬될 수 있습니다(예: 파이프라인, 두 개의 오케스트레이션, 업무용 응용 프로그램 및 다른 파이프라인). BAM 인프라는 개발자의 도움을 받아 여러 애플리케이션의 이벤트를 상호 연결할 수 있습니다. 다음 그림에 표시된 "연속"이라는 개념입니다.

BAM 인프라를 보여 주는 스크린샷

애플리케이션

활동의 첫 번째 부분은 Sales 응용 프로그램에서 발생하며, 활동의 두 번째 부분은 Packaging & Assembly 응용 프로그램에서 발생하고, 마지막 배달 진행 과정은 Shipping 응용 프로그램에서 사용할 수 있습니다. 각 애플리케이션은 PO(구매 주문 번호), SO(판매 주문 번호) 및 UPS(배송 주문 번호)와 같은 현재 작업 단위에 대해 서로 다른 ID를 사용합니다. 여러 응용 프로그램 사이의 이벤트에 대한 상관 관계를 지정하려면 다음을 수행해야 합니다.

  • 두 응용 프로그램에서 모두 사용할 수 있는 고유한 데이터 정보인 Continuation 토큰을 식별합니다(예: 교환 중인 메시지 파트).

  • 첫 번째 응용 프로그램에서 EnableContinuation을 호출하고 Continuation 토큰을 현재 ActivityID와 함께 전달합니다.

  • 두 번째 응용 프로그램에서 BeginActivity를 호출하지 않습니다.

  • ActivityID 대신 Continuation 토큰을 사용하여 두 번째 응용 프로그램에서 후속 이벤트를 모두 발생시킵니다.

    다음 예제 코드는 세 개의 응용 프로그램에서 활동 Continuation을 사용하는 방법을 보여 줍니다.

    Purchase Order 응용 프로그램

string oID="PO#123";  
string soID="SO#265";  
es.BeginActivity("PurchaseOrder",poID);  
es.UpdateActivity("PurchaseOrder",poID,  
    "POReceived",DateTime.UtcNow,  
    "POAmount",100,  
"CustomerCity","Seattle");  
es.EnableContinuation(  
   "PurchaseOrder",poId,soID);  
es.EndActivity("PurchaseOrder",poID);  

Fulfillment 응용 프로그램

string soID="SO#265";  
string upsID="UPS#97892";  
es.UpdateActivity("PurchaseOrder",soID,  
    "POApproved",DateTime.UtcNow,  
    "ProductName","ProductA");  
es.EnableContinuation(  
   "PurchaseOrder",soID,upsID);  
es.EndActivity("PurchaseOrder",soID);  

Shipping 응용 프로그램

string upsID="UPS#97892"  
es.UpdateActivity("PurchaseOrder", upsID,  
"POShipped",DateTime.UtcNow);  
es.EndActivity("PurchaseOrder",upsID)  
  

코드의 활동 Continuation 사용에 대한 다음 지침을 따르십시오.

  • 사용자가 여러 응용 프로그램 작업을 동일 활동의 일부로 처리해야 하는 경우에만 Continuation을 사용하십시오. 각 응용 프로그램에 대해 별개의 활동을 사용하고 각 응용 프로그램의 작업이 최종 사용자에게 의미 있는 활동으로 사용되는 경우 활동 관계를 만듭니다.

  • 응용 프로그램에서 작업 단위가 일대일 관계가 아니면 활동 관계를 사용할 수 있지만 Continuation은 사용할 수 없습니다(예: 판매 주문 하나에 대해 배송 항목이 여러 개인 경우).

  • DirectEventStream을 사용하여 BAM에 데이터를 동기식으로 전송하면 모든 관련 구성 요소에 ActivityID가 전파되므로 Continuation을 사용할 필요가 없습니다.

  • BufferedEventStream을 사용하거나 오케스트레이션으로부터 비동기식으로 BAM에 데이터를 전송하면 모든 구성 요소에 ActivityID가 전파되더라도 Continuation을 사용해야 합니다. 이 경우에는 ActivityID 앞에 고유한 문자열(예: 응용 프로그램 이름)을 붙여서 각 응용 프로그램에서 서로 다른 ActivityID를 사용해야 합니다. 여러 응용 프로그램의 데이터가 BAM에 무작위로 도착할 수 있으며 BAM은 올바른 쿼리 및 집계 결과를 보장하기 위해 오래된 이벤트는 숨겨야 하기 때문에 이 작업이 필요합니다.

  • Continuation에서는 추가 데이터 교환을 위해 응용 프로그램을 다시 작성할 필요가 없습니다.

참고 항목

BAM 동적 인프라
BAM API(BizTalk Server 샘플)
BAM 엔드투엔드(BizTalk Server 샘플)