CallOrchestration(BizTalk Server 샘플)
CallOrchestration 샘플은 한 BizTalk 오케스트레이션에서 다른 BizTalk 오케스트레이션을 호출하는 방법을 보여 줍니다.
이 샘플의 용도
이 샘플은 한 오케스트레이션에서 다음 단계를 사용하여 다른 오케스트레이션을 호출하는 과정을 보여 줍니다.
기본 오케스트레이션에서 PO(구매 주문) 메시지를 받습니다.
기본 오케스트레이션에서 보조 오케스트레이션을 호출하여 배송료를 확인합니다.
보조 오케스트레이션에서 요청된 배송료를 계산하여 기본 오케스트레이션으로 반환합니다.
기본 오케스트레이션에서 반환된 배송료로 PO 메시지를 업데이트합니다.
기본 오케스트레이션에서 검사를 위해 업데이트된 PO 메시지를 폴더에 저장합니다.
이 샘플이 디자인된 방식 및 이유
이 샘플의 기본 목적은 한 오케스트레이션에서 다른 오케스트레이션를 호출하는 방법을 보여 주는 것입니다. 오케스트레이션 호출 기능을 사용하면 비즈니스 프로세스를 재사용 가능한 구성 요소로 분리할 수 있습니다. 즉, 다른 사용자가 재사용하도록 일반 프로세스를 별도의 오케스트레이션으로 팩터링할 수 있습니다.
이 샘플에서 receivePO.odx의 호출 오케스트레이션 셰이프는 findShippingPrice.odx를 호출하고 중첩된 오케스트레이션인 findShippingPrice.odx를 대기하여 구매 주문을 보내기 전에 배송 가격을 계산하고 반환합니다. findShippingPrice.odx 오케스트레이션에서는 다음 논리를 사용하여 배송료를 계산합니다.
If ( weight * shippingRate ) < minShippingPrice Then
shippingPrice = minShippingPrice
Else
shippingPrice = weight * shippingRate
End If
샘플 입력 PO 파일 InputPO.xml에서 가중치(weight)를 20으로 지정하면 출력 PO 메시지에서 배송료(shipping price)가 10에서 20으로 변경됩니다.
참고
원자성 오케스트레이션에서는 장기 실행 트랜잭션을 호출할 수 없습니다.
참고
호출 오케스트레이션 셰이프와 오케스트레이션 시작 셰이프의 차이점은 오케스트레이션을 호출할 때 호출자가 중첩된 오케스트레이션이 반환될 때까지 기다렸다가 계속 진행한다는 것입니다. 특정 오케스트레이션에서 오케스트레이션을 시작한 경우에는 호출자가 작업을 시작한 후에 프로세스 흐름의 다른 단계로 이동합니다. 호출자가 호출한 오케스트레이션은 프로세스 흐름을 완료할 때까지 독립적으로 실행됩니다. 자세한 내용은 호출 오케스트레이션 셰이프를 구성하는 방법을 참조하세요. 시작 오케스트레이션 셰이프를 구성하는 방법도 참조하세요.
이 샘플이 있는 위치
< 샘플 경로>\Orchestrations\CallOrchestration\
다음 표는 이 샘플의 파일을 보여 주고 각각의 용도에 대해 설명합니다.
파일 | Description |
---|---|
CallOrchestration.btproj, CallOrchestration.sln | 이 샘플에 대한 프로젝트 및 솔루션 파일입니다. |
CallOrchestrationBinding.xml | 포트 바인딩과 같은 자동화된 설치에 사용됩니다. |
Cleanup.bat | 어셈블리 배포를 취소하고 전역 어셈블리 캐시에서 어셈블리를 제거하는 데 사용됩니다. 송신 및 수신 포트를 제거합니다. 필요한 경우 Microsoft IIS(인터넷 정보 서비스) 가상 디렉터리를 제거합니다. |
findShippingPrice.odx | 기본 오케스트레이션 receivePO.odx에서 호출한 보조 오케스트레이션 역할을 하는 BizTalk 오케스트레이션입니다. |
InputPO.xml | PO.xsd 파일에 정의된 스키마를 준수하는 샘플 입력 PO 메시지입니다. |
PO.xsd | 샘플 입력 파일 InputPO.xml과 같은 인바운드 PO 메시지의 구조를 정의하고 포함된 세 요소 모두에 대한 속성 승격을 정의하는 스키마입니다. |
PropertySchema.xsd | PO.xsd 스키마의 세 요소 모두에 대한 속성 승격에 참여하는 속성 스키마 파일입니다. |
receivePO.odx | 이 샘플에서 기본 오케스트레이션 역할을 하는 BizTalk 오케스트레이션으로, 수신 폴더에서 PO 메시지를 검색한 후 다른 오케스트레이션 findShippingPrice.odx를 호출하여 배송료를 계산하고 업데이트합니다. |
Setup.bat | 이 샘플을 빌드 및 초기화하는 데 사용됩니다. |
이 샘플 빌드 및 초기화
CallOrchestration 샘플을 빌드하고 초기화하려면
명령 창에서 다음 폴더로 이동합니다.
< 샘플 경로>\Orchestrations\CallOrchestration\
다음 작업을 수행하는 Setup.bat 파일을 실행합니다.
CallOrchestration 폴더에 이 샘플에 대한 입력(In) 및 출력(Out) 폴더를 만듭니다.
이 샘플에 대해 두 오케스트레이션을 모두 포함하는 Visual Studio 프로젝트를 컴파일하고 배포합니다.
BizTalk Server 수신 위치와 송신 및 수신 포트를 만들고 바인딩합니다.
수신 위치를 사용하도록 설정하고 송신 포트를 시작합니다.
참고
이 샘플을 실행하기 전에 BizTalk Server가 빌드 및 초기화 프로세스 동안 오류를 보고하지 않았는지 확인해야 합니다.
이 샘플 실행
CallOrchestration 샘플을 실행하려면
InputPO.xml 파일의 복사본을 In 폴더에 넣습니다.
Out 폴더에 만들어지는 업데이트된 XML PO 파일을 관찰합니다. 이 파일에는 앞에서 설명한 대로 계산된 배송료를 포함하도록 수정된 원본 PO 메시지가 들어 있습니다. 이 파일의 이름 형식은 <MessageID>.xml. 여기서 <MessageID> 는 메시지를 고유하게 식별하기 위해 생성된 GUID입니다.
이 샘플 제거
CallOrchestration 샘플을 제거하려면
Visual Studio 명령 창에서 다음 폴더로 이동합니다.
< 샘플 경로>\Orchestrations\CallOrchestration\
Cleanup.bat를 실행합니다.