EnvelopeProcessing(BizTalk Server 샘플)
EnvelopeProcessing 샘플은 BizTalk Server 파이프라인에서 메시지 및 메시지 봉투를 처리하는 방법을 보여 줍니다. 또한 플랫 파일 메시지를 XML 메시지로 처리하는 방법을 보여 줍니다.
이 샘플의 용도
이 샘플에서는 EnvInput 폴더를 수신 위치로 구성합니다. 샘플 파일 EnvelopeProcessing_in.txt 같은 파일을 이 폴더에 배치하면 BizTalk Server 다음 단계를 사용하여 이 파일의 메시지를 처리합니다.
BizTalk Server 수신 위치 폴더 EnvInput에서 메시지 파일을 검색합니다.
수신 파이프라인에서 Flat File Disassembler 파이프라인 구성 요소는 플랫 파일 메시지에서 헤더와 트레일러를 제거하고 개별 메시지로 구문 분석합니다.
MessageBox 데이터베이스에서 메시지가 등록 필터를 사용하여 송신 포트로 라우팅됩니다.
송신 포트의 송신 파이프라인에서 XML Assembler 파이프라인 구성 요소가 메시지를 XML 봉투(Envelope)에 래핑한 다음 송신 어댑터 폴더 EnvOutput에 넣습니다.
이 샘플이 디자인된 방식 및 이유
이 샘플의 디자인은 다음 두 가지 기본 요구 사항을 충족해야 했습니다.
하나 이상의 구매 주문이 포함된 플랫 파일 메시지를 받고 처리합니다.
백 엔드 처리 시스템이 선택할 수 있도록 구매 주문 및 보낸 사람 정보가 포함된 XML 메시지를 디렉터리로 보냅니다.
이러한 요구 사항을 충족하기 위해 플랫 파일/XML 스키마와 사용자 지정 파이프라인의 조합이 사용되었습니다. 이러한 디자인 요소 및 다른 디자인 요소는 다음 표에 요약되어 있습니다.
디자인 요소 | 선택 이유 |
---|---|
사용자 지정 수신 파이프라인 | - 플랫 파일 디스어셈블러 및 플랫 파일 스키마를 사용하여 인바운드 구매 주문 메시지를 변환합니다. |
메시지 헤더, 본문 및 트레일러에 대한 플랫 파일 스키마 | - 동일한 레코드 및 필드 특성(구조 포함)을 XML 스키마로 정의하고 플랫 파일 instance 메시지를 동등한 XML instance 메시지로 변환하는 데 필요한 모든 플랫 파일 특성을 정의하는 메커니즘을 제공합니다(또는 그 반대의 경우도 마찬가지). - 헤더, 본문 및 트레일러 스키마는 처리를 위해 본문을 불연속 청크로 분할하는 데 사용됩니다. |
봉투(Envelope) 스키마 | - 헤더의 정보로 개별 구매 주문을 래핑하는 데 사용됩니다. |
구독 필터 | - 구독 필터는 속성 필드를 기반으로 하나 이상의 조건을 충족하는 메시지를 캡처하여 실제 라우팅을 수행합니다. |
사용자 지정 송신 파이프라인 | - XML 어셈블러와 봉투와 본문 스키마의 조합을 사용하여 instance 메시지를 XML 형식으로 변환합니다. |
이 샘플의 디자인에는 다음 고려 사항이 적용됩니다.
플랫 파일 스키마(PO.xsd)에 구매 주문 플랫 파일의 구조를 설명하는 확장 구조가 포함됩니다. 수동으로 이러한 파일을 만들 수도 있지만 대부분 플랫 파일 마법사를 사용하여 생성할 수 있습니다.
구매 주문(PO.xsd) 플랫 파일 스키마는 elementFormDefault 값 Unqualified를 사용합니다. 이 경우 올바른 결과가 생성되지만 예기치 않은 추가 xmlns 자격이 있습니다. 이 문제를 방지하려면 elementFormDefault로 Qualified를 사용합니다.
헤더 및 트레일러 플랫 파일 스키마는 메시지에서 제목 및 후행 데이터를 구분하는 데 사용됩니다. Flat File Disassembler 헤더, 문서 및 트레일러 스키마 속성이 각각 헤더, 구매 주문 및 트레일러 스키마로 설정되었습니다.
XML 봉투(Envelope) 스키마는 헤더 및 구매 주문의 요소를 결합하여 단일 XML 메시지를 생성합니다. 헤더 스키마는 원본 필드를 BTS.bts_system_properties 네임스페이스의 SourceParty 필드로 승격합니다. 봉투 스키마는 이 동일한 값을 승격하여 아웃바운드 메시지로 강등됩니다.
이 샘플이 있는 위치
<Samples Path>
\Pipelines\AssemblerDisassembler\EnvelopeProcessing\
다음 표는 이 샘플의 파일을 보여 주고 각각의 용도에 대해 설명합니다.
파일 | Description |
---|---|
Cleanup.bat | 어셈블리 배포를 취소하고 전역 어셈블리 캐시에서 어셈블리를 제거하는 데 사용됩니다. 송신 및 수신 포트를 제거합니다. 필요한 경우 Microsoft IIS(인터넷 정보 서비스) 가상 디렉터리를 제거합니다. |
EnvelopeProcessing.btproj, EnvelopeProcessing.sln | 이 샘플에 대한 프로젝트 및 솔루션 파일입니다. |
EnvelopeProcessing_in.txt | 샘플 입력 파일입니다. |
Header.xsd, PO.xsd, Trailer.xsd | 각각 플랫 파일 헤더, 본문 및 트레일러에 대한 스키마입니다. |
XmlEnvelope.xsd | 아웃바운드 XML 봉투(Envelope)에 대한 스키마입니다. |
EnvReceivePipeline.btp, EnvSendPipeline.btp | BizTalk Server 각각 플랫 파일 디스어셈블러 및 XML 어셈블러 파이프라인 구성 요소를 사용하여 파이프라인 파일을 수신하고 보냅니다. |
EnvelopeProcessingBinding.xml | 포트 바인딩과 같은 자동화된 설치에 사용됩니다. |
Setup.bat | 이 샘플을 빌드 및 초기화하는 데 사용됩니다. |
이 샘플의 사용 방법
고유한 플랫 파일 처리 솔루션의 기초로 이 샘플을 사용합니다. 이 샘플에 사용된 디자인 요소는 대부분 고유한 요구 사항에 맞게 확장할 수 있습니다. 몇 가지 예는 다음과 같습니다.
XML 버전 외에도 각 구매 주문의 플랫 파일 버전을 작성하도록 샘플을 향상시킵니다. 이렇게 하려면 새 사용자 지정 송신 파이프라인을 만들고 Flat File Assembler를 사용합니다. Flat File Assembler에서 플랫 파일 헤더, 구매 주문 및 트레일러 스키마를 지정합니다. 송신 포트에서 사용될 경우 헤더/트레일러 정보가 포함된 개별 구매 주문을 생성합니다.
구매 주문의 추가 정보를 사용하여 봉투(Envelope)를 향상시킵니다. 아웃바운드 메시지에 추가 정보를 쓰려면 즉시 승격을 사용하여 "받는 사람" 이름이나 기타 필드를 승격하고, 봉투(Envelope)에 필드를 추가한 다음 봉투(Envelope) 필드를 동일한 필드로 승격합니다. 어셈블러를 통해 메시지를 처리하는 경우 승격 속성의 수준이 내려지고 아웃바운드 메시지에 복사됩니다.
이 샘플 빌드 및 초기화
EnvelopeProcessing 샘플을 빌드하고 초기화하려면 다음을 수행하십시오.
명령 창에서 다음 폴더로 이동합니다.
<샘플 경로>\Pipelines\AssemblerDisassembler\EnvelopeProcessing
다음 작업을 수행하는 Setup.bat 파일을 실행합니다.
다음 폴더에 이 샘플의 입력(EnvInput) 폴더와 출력(EnvOutput) 폴더를 만듭니다.
<샘플 경로>\Pipelines\AssemblerDisassembler\EnvelopeProcessing\
이 샘플에 대한 Visual Studio 프로젝트를 컴파일 및 배포합니다.
BizTalk Server 수신 위치와 송신 및 수신 포트를 만들고 바인딩합니다.
이 샘플은 포트를 만들고 바인딩할 때 다음과 같은 경고를 표시합니다.
Warning: Receive handler not specified for receive location "EnvelopeProcessing_RL"; updating with first receive handler with matching transport type. Warning: Host not specified for orchestration "EnvelopeProcessing"; updating with first available host.
이러한 경고는 무시해도 됩니다. (사용자 설치에서 이름 지정에 차이가 있을 수 있는 경우 이를 수용하기 위해 호스트 이름과 수신 핸들러가 바인딩 파일에서 생략되었습니다.)
수신 위치를 사용하도록 설정하고 송신 포트를 시작합니다.
참고
이 샘플을 실행하기 전에 BizTalk Server가 빌드 및 초기화 프로세스 동안 오류를 보고하지 않았는지 확인해야 합니다.
참고
Setup.bat를 실행하지 않고 이 샘플에서 프로젝트를 열고 빌드하려는 경우 먼저 .NET Framework Strong Name Utility(sn.exe)를 사용하여 강력한 이름 키 쌍을 만들어야 합니다. 이 키 쌍을 사용하여 결과 어셈블리에 서명을 합니다.
참고
Setup.bat가 변경한 내용을 실행 취소하려면 Cleanup.bat를 실행합니다. Setup.bat를 두 번째로 실행하기 전에 Cleanup.bat를 실행해야 합니다.
이 샘플 실행
EnvelopeProcessing 샘플을 실행하려면 다음을 수행하십시오.
EnvelopeProcessing_in.txt 파일의 복사본을 EnvInput 폴더에 넣습니다.
EnvOutput 폴더에 세 개의 .xml 파일이 만들어졌는지 확인합니다. 이 .xml 파일의 이름은 메시지 ID GUID를 기반으로 합니다. 이 파일에는 입력 파일에서 추출되고 봉투(Envelope)에 래핑된 메시지가 들어 있습니다.
이 샘플에서 사용된 클래스 또는 메서드
구성 스크립트 Setup.bat와 Cleanup.bat는 다음과 같은 관리 WMI(Windows Management Instrumentation) 스크립트를 사용합니다.
Start Send Port\StartSendPort.vbs
Enable Receive Location\EnableRecLoc
Remove Send Port\RemoveSendPort
설정 및 정리 배치 파일은 다음과 같이 BTSTask를 사용합니다.
바인딩 파일을 적용하고 애플리케이션, 포트 및 바인딩을 만드는 BTSTask ImportBindings
FLATFileReceiveApplication을 제거하는 BTSTask RemoveApp