BAM 종단 간(BizTalk Server 샘플)
종단 간 샘플은 BAM을 통해 여러 구성 요소(이 경우, 3개의 오케스트레이션 및 파이프라인)에서 이벤트의 상관 관계를 지정하는 방법을 보여 줍니다.
파이프라인 구성 요소와 오케스트레이션에 걸쳐 있는 비즈니스 활동을 다시 구성하는 BAM은 가장 낮은 수준에서는 작업에 더 많은 이벤트가 필요한 각 구현 구성 요소에서 EventStream.EnableContinuation 을 호출하여 작동합니다. EnableContinuation에 대한 호출은 명시적이지만 Orchestration1 및 Orchestration2의 호출은 한 일정으로 추적 프로필에 Continuation 폴더를 추가하고 ContinuationID 폴더를 다음 일정에 추가하여 수행됩니다.
다음 다이어그램에서는 샘플에서 사용되는 워크플로를 보여 줍니다.
이 샘플의 용도
BAM 종단 간 샘플은 BAM을 통해 파이프라인과 여러 오케스트레이션에서 정보를 수집하고 단일 활동을 업데이트하는 방법을 보여 줍니다.
이 샘플이 디자인된 방식 및 이유
BAM 종단 간 샘플은 다음 활동을 보여 주기 위해 디자인되었습니다.
파이프라인 내에서 BAM 사용
TPE(추적 프로필 편집기)를 사용하여 오케스트레이션의 셰이프와 메시지 요소에 활동 항목 매핑
여러 개의 솔루션 모음을 통해 활동이 발생할 때 Continuation을 사용하여 활동을 활성 상태로 유지
이 샘플은 다음과 같이 작동합니다.
입력 메시지는 샘플 경로>\BamEndToEnd\Input 폴더에서< 검색됩니다.
파이프라인 구성 요소는 고유한 DocumentID를 메시지에 할당하고 BAM API를 사용하여 새 BAM 활동을 시작합니다. DocumentID는 오케스트레이션에 사용할 수 있도록 별도의 입력 메시지 부분으로 첨부됩니다.
입력 메시지를 받으면 Orchestration1 서비스가 활성화됩니다.
Orchestration1은 입력 메시지를 수정하고 이 메시지를 Orchestration2에 매개 변수로 전달합니다.
Orchestration2는 입력 메시지를 수정하고 이 메시지를 Orchestration3을 활성화하는 MessageBox 데이터베이스로 전송합니다.
Orchestration3은 메시지를 수정하고 Samples Path>\BamEndToEnd\Output 폴더<에 씁니다.
각 오케스트레이션이 BAM 활동에서 활동 항목을 업데이트합니다.
이 샘플이 있는 위치
샘플 경로\BAM\BamEndToEnd에서 <이 샘플을 찾을 수 있습니다.>
다음 표는 이 샘플의 파일을 보여 주고 각각의 용도에 대해 설명합니다.
파일 | Description |
---|---|
BamEndToEnd.sln | BAM 종단 간 샘플 솔루션. |
BamEndToEnd.xls | BAM 정의 스타일시트 |
BamEndToEnd.xml | BAM 정의 XML. |
BAMEndToEndBinding.xml | BAM 바인딩 |
Cleanup.bat | 이 샘플을 배포 취소하는 일괄 처리 파일. |
InputMessage.xml | 입력 메시지. |
Setup.bat | 샘플을 컴파일 및 배포하는 일괄 처리 파일. |
\Components\AssemblyInfo.cs | 파이프라인 구성 요소 코드. |
\Components\BAMMessagePartPLComponent.cs | 파이프라인 구성 요소 코드. |
\Components\Components.csproj | 파이프라인 구성 요소 프로젝트. |
\Messages\InputMessage01.xml ... \Messages\InputMessage10.xml |
샘플 입력 메시지. |
\Services\BAMInbound.btp | 인바운드 파이프라인 파일. |
\Services\BAMPartSchema.xsd | BAM 파트 메시지 스키마. |
\Services\Orchestration1.odx | 오케스트레이션. |
\Services\Orchestration2.odx | 오케스트레이션. |
\Services\Orchestration3.odx | 오케스트레이션. |
\Services\PropertySchema.xsd | 속성 스키마입니다. |
\Services\Schema1.xsd | 메시지 스키마. |
\Services\Schema2.xsd | 메시지 스키마. |
Services\Schema3.xsd | 메시지 스키마. |
\Services\Services.btproj | Visual Studio BizTalk 파일 프로젝트입니다. |
\Services\Transform_1.btm | 맵 파일. |
\Services\Transform_2.btm | 맵 파일. |
\Services\Transform_3.btm | 맵 파일. |
이 샘플의 사용 방법
다음 절차에 따라 BAM 종단 간 샘플을 빌드하고 실행합니다.
이 샘플 빌드 및 초기화
관리자 권한으로 명령 프롬프트를 열고 샘플 경로>\BAM\BAMEndToEnd\Setup.bat 실행<합니다. Setup.bat는 이 샘플에 대한 BAM 인프라를 빌드하고 초기화합니다. 명령 프롬프트는 열린 상태로 유지합니다.
Orchestration1, Orchestration2 및 Orchestration3을 BAM 활동에 매핑할 추적 프로필을 만듭니다. (추적 프로필을 만드는 것은 복잡한 프로세스이므로 자세한 지침은 추적 프로필을 만들려면라는 별도의 절차에 있습니다. 이 절차는 이 문서의 뒷부분에 나와 있습니다.)
이전 단계에서 만든 추적 프로필 BamEndToEnd.btt를 배포합니다. 명령 프롬프트에서 샘플 경로>\BAM\BamEndToEnd 디렉터리로 변경<합니다. 추적 프로필을 배포하려면 다음 줄을 입력한 다음 Enter 키를 누릅니 다.
“<BizTalkInstallationPath>\Tracking\bttdeploy” BamEndToEnd.btt
추적 프로필 관리 유틸리티를 사용하여 추적 프로필을 배포하는 방법은 자세한 정보를 제공합니다.
중요
ContinuationID Orch1_에 일치하는 Continuation이 없다는 메시지는 무시해도 됩니다. 이름이 Orch1_인 Continuation이 추적 프로필이 아닌 파이프라인 구성 요소에 정의되어 있기 때문에 이 메시지가 발생합니다.
이 샘플 실행
샘플 경로>\BamEndToEnd\InputMessage.xml 파일을<Samples Path>\BamEndToEnd\Input 폴더<에 복사합니다. 몇 초 후에 메시지가 입력 폴더에서 사라지고 출력 메시지가 Samples Path>\BamEndToEnd\Output 폴더에< 나타납니다.
BAM 데이터 보기
SQL Server Management Studio를 엽니다.
SQL Server Management Studio 서버를 확장하고 데이터베이스를 확장한 다음 BAMPrimaryImport를 확장한 다음 테이블을 확장합니다.
dbo.bam_EndToEndActivity_Completed 마우스 오른쪽 단추로 클릭한 다음 테이블 열기를 클릭합니다. SQL Server 사용하는 경우 상위 1,000개 행 선택을 클릭합니다.
bam_EndToEndActivity_Completed 테이블의 내용이 오른쪽 창에 표시됩니다. 테이블에 있는 각 열은 완료된 EndToEndActivity 활동을 나타냅니다.
이 샘플 다시 실행
관리자 권한으로 명령 프롬프트를 열고 Samples Path>\BAM\BamEndToEnd 디렉터리로 변경<합니다. 다음 줄을 입력합니다.
“C:\Program Files\Microsoft BizTalk Server <version>\Tracking\bttdeploy” BamEndToEnd.btt /remove
참고
C 드라이브에 BizTalk Server 설치하지 않은 경우 "C"를 BizTalk Server 설치한 드라이브 문자로 바꿉니다.
샘플 경로>\BAM\BAMEndToEnd\Cleanup.bat 실행<합니다. Cleanup.bat를 실행하면 이 샘플에 대한 BAM 인프라가 제거됩니다.
이 항목의 이 샘플 섹션을 빌드하고 초기화하려면 의 단계를 수행합니다.
추적 프로필 만들기
시작을 클릭하고 모든 프로그램을 가리키고 Microsoft BizTalk Server 20xx를 가리킵니다. 추적 프로필 편집기를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 클릭합니다.
추적 프로필 편집기 창의 왼쪽 창에서 BAM 활동 정의를 가져오려면 여기를 클릭합니다.
BAM 활동 정의 가져오기 대화 상자의 BAM 활동 정의 이름 섹션에서 EndToEndActivity를 선택한 다음 확인을 클릭합니다.
추적 프로필 편집기 창의 오른쪽 창에서 여기를 클릭하여 이벤트 원본을 선택합니다.
이벤트 원본 부모 어셈블리 선택 대화 상자의 어셈블리 이름 섹션에서 Microsoft.Samples.BizTalk.BamEndToEnd.Services를 선택하고 다음을 클릭합니다.
오케스트레이션 선택 대화 상자의 오케스트레이션 이름 섹션에서 BamEndToEnd.Services.Orchestration1을 선택한 다음 확인을 클릭합니다.
추적 프로필 편집기 창의 왼쪽 창에서 EndToEndActivity를 마우스 오른쪽 단추로 클릭한 다음 새 ContinuationID를 클릭합니다. 새 연속 ID 이름을 Orch1_. 이 단계를 반복하여 Orch2_ 및Orch3_ 라는 두 개의 연속 ID를 만듭니다.
EndToEndActivity를 마우스 오른쪽 단추로 클릭한 다음 새 연속을 클릭합니다. 새 연속 Orch2_ 이름을 지정합니다. 이 단계를 반복하여 Orch3_ 라는 또 다른 연속 작업을 만듭니다.
Receive1 셰이프를 마우스 오른쪽 단추로 클릭한 다음 컨텍스트 속성 스키마를 클릭합니다.
컨텍스트 속성 이름 목록의 끝으로 스크롤한 다음 BAMEndToEnd.Services.PropertySchema.DocumentID를 두 번 클릭합니다.
스키마>를 확장<한 다음 오른쪽 창에서 DocumentID를 끌어 왼쪽 창에서 Orch1_.
화살표가 있는 폴더 아이콘()을 두 번 클릭하여 오케스트레이션을 표시합니다.
오른쪽 창의 Receive1 셰이프를 왼쪽 창의 SBegin1 로 끌어옵니다.
오른쪽 창의 StartOrchestration_1 셰이프를 왼쪽 창의 SEnd1 로 끕니다.
StartOrchestration_1 셰이프를 마우스 오른쪽 단추 로 클릭한 다음 메시지 페이로드 스키마를 클릭합니다.
메시지 열의 "Message_2" 값과 Part 열의 "MessageBody" 값이 포함된 행을 두 번 클릭합니다.
message_2 을
Schema2를 확장한 다음 오른쪽 창의 Data2를 왼쪽 창의 Data1로 끌어옵니다.
이벤트 원본 선택을 클릭한 다음 컨텍스트 속성 선택을 클릭합니다.
컨텍스트 속성 이름 목록의 끝으로 스크롤한 다음 BAMEndToEnd.Services.PropertySchema.DocumentID를 두 번 클릭합니다.
스키마>를 확장<한 다음 DocumentID를 왼쪽 창의 Orch2_ 연속으로 끌어옵니다.
참고
Orch2_ Continuation과 Orch2_ Continuation ID를 혼동하지 마십시오. 연속 ID를 나타내는 아이콘에는 키(의 아이콘)가 포함되는 반면 연속을 나타내는 아이콘에는 키( 아이콘)가 포함되지 않습니다.
이벤트 원본 선택을 클릭한 다음 오케스트레이션 일정 선택을 클릭합니다.
이벤트 원본 부모 어셈블리 선택 대화 상자의 어셈블리 이름 섹션에서 Microsoft.Samples.BizTalk.BamEndToEnd.Services를 선택하고 다음을 클릭합니다.
오케스트레이션 선택 대화 상자의 오케스트레이션 이름 섹션에서 BamEndToEnd.Services.Orchestration2를 선택한 다음 확인을 클릭합니다.
ConstructMessage_1 셰이프를 마우스 오른쪽 단추 로 클릭한 다음 메시지 페이로드 스키마를 클릭합니다.
메시지 열의 "Message_3" 값과 Part 열의 "BAMPart" 값이 포함된 행을 두 번 클릭합니다.
BAMPart를 확장한 다음 오른쪽 창의 DocumentID를 왼쪽 창의 Orch2_ 연속 ID로 끕니다.
참고
Orch2_ Continuation과 Orch2_ Continuation ID를 혼동하지 마십시오. 연속 ID를 나타내는 아이콘에는 키(의 아이콘)가 포함되는 반면 연속을 나타내는 아이콘에는 키( 아이콘)가 포함되지 않습니다.
화살표가 있는 폴더 아이콘()을 두 번 클릭하여 오케스트레이션을 표시합니다.
오른쪽 창의 ConstructMessage_1 셰이프를 왼쪽 창의 SBegin2 로 끌어옵니다.
오른쪽 창의 Send_1 셰이프를 왼쪽 창의 SEnd2 로 끕니다.
Send_1 셰이프를 마우스 오른쪽 단추 로 클릭한 다음 메시지 페이로드 스키마를 클릭합니다.
메시지 열의 "Message_3" 값과 Part 열의 "MessageBody" 값이 포함된 행을 두 번 클릭합니다.
스키마3을 확장한 다음 오른쪽 창의 Data3을 왼쪽 창의 Data2로 끌어옵니다.
오른쪽 창 위의 드롭다운 목록에서 메시지 페이로드 스키마를 선택합니다.
메시지 열의 "Message_3" 값과 Part 열의 "BAMPart" 값이 포함된 행을 두 번 클릭합니다.
BAMPart를 확장한 다음 오른쪽 창의 DocumentID를 왼쪽 창의 Orch3_ 연속으로 끌어옵니다.
참고
Orch3_ Continuation과 Orch3_ Continuation ID를 혼동하지 마십시오. 연속 ID를 나타내는 아이콘에는 키(의 아이콘)가 포함되는 반면 연속을 나타내는 아이콘에는 키( 아이콘)가 포함되지 않습니다.
이벤트 원본 선택을 클릭한 다음 오케스트레이션 일정 선택을 클릭합니다.
이벤트 원본 부모 어셈블리 선택 대화 상자의 어셈블리 이름 섹션에서 Microsoft.Samples.BizTalk.BamEndToEnd.Services를 선택하고 다음을 클릭합니다.
오케스트레이션 선택 대화 상자의 오케스트레이션 이름 섹션에서 BamEndToEnd.Services.Orchestration3을 선택한 다음 확인을 클릭합니다.
Receive1 셰이프를 마우스 오른쪽 단추로 클릭한 다음 메시지 페이로드 스키마를 클릭합니다.
메시지 열의 "Message_3" 값과 Part 열의 "BAMPart" 값이 포함된 행을 두 번 클릭합니다.
BAMPart를 확장한 다음 오른쪽 창의 DocumentID를 왼쪽 창의 Orch3_ 연속 ID로 끕니다.
참고
Orch3_ Continuation과 Orch3_ Continuation ID를 혼동하지 마십시오. 연속 ID를 나타내는 아이콘에는 키(의 아이콘)가 포함되는 반면 연속을 나타내는 아이콘에는 키( 아이콘)가 포함되지 않습니다.
화살표가 있는 폴더 아이콘()을 두 번 클릭하여 오케스트레이션을 표시합니다.
오른쪽 창의 Receive1 셰이프를 왼쪽 창의 SBegin3 으로 끌어옵니다.
오른쪽 창의 Send_1 셰이프를 왼쪽 창의 SEnd3 으로 끕니다.
Send_1 셰이프를 마우스 오른쪽 단추 로 클릭한 다음 메시지 페이로드 스키마를 클릭합니다.
Schema3을 확장한 다음 오른쪽 창의 Data3을 왼쪽 창의 Data3으로 끌어옵니다.
Orch2_ 연속 작업 아래의 DocumentID 를 마우스 오른쪽 단추 로 클릭한 다음 포트 매핑 설정을 클릭합니다.
참고
Orch2_ Continuation과 Orch2_ Continuation ID를 혼동하지 마십시오. 연속 ID를 나타내는 아이콘에는 키(의 아이콘)가 포함되는 반면 연속을 나타내는 아이콘에는 키( 아이콘)가 포함되지 않습니다.
포트 선택 대화 상자의 포트 선택 섹션에서 BamEndToEnd_ReceivePort 클릭하고 보다 큰 기호(>)를 클릭한 다음 확인을 클릭합니다.
추적 프로필을 <Samples Path>\BAM\BamEndToEnd\BamEndToEnd.btt에 저장합니다.
중요 세부 정보
파이프라인에 대한 추적 프로필은 지원되지 않습니다. 그러나 파이프라인 구성 요소에서 BeginActivity 에 대한 호출은 오케스트레이션에서 ActivityID를 사용하는 것과 동일합니다. EnableContinuation에 대한 호출은 오케스트레이션에서 연속을 사용하는 것과 동일합니다.