2012-04-23 1 views
0

나는 위치 기반 데이터를 txt 형식으로 수신해야하는 요구 사항이 있습니다.런타임 중에 파이프 라인에서 XSD를 동적으로 선택하는 방법은 무엇입니까?

레코드의 처음 2자를 사용하면 메시지 유형을 식별하는 데 도움이됩니다.

아니요. 40+ 메시지 유형이 없으므로 메시지 유형에 따라 수신 파이프 라인에서 xsd를 가져와야합니다.

런타임 중에 파이프 라인에서 xsd를 동적으로 가져 오는 가장 좋은 방법은 무엇입니까?

답변

1

짧은 대답은 당신이 후에 무엇

는 내장 플랫 파일 구성 요소의 인스턴스를 호스팅하는 사용자 정의 flat file disassembler 구성 요소를 작성하지만, 이는 또한 IProbeMessage 인터페이스를 구현한다.

이 인터페이스를 사용하면 BizTalk 런타임에서 수신 파이프 라인의 디스 어셈블 단계에서 여러 구성 요소를 선택할 수 있습니다.

당신이 사용자 지정 파이프 라인, 가능한 플랫 파일 .XSD 스키마 각각에 대해 하나의 여러 버전을 사용하여 멀리 얻을 수

불행하게도,이 솔루션은 신속하게 유지 보수 악몽과 성능 문제가 될 것입니다. 따라서 한 단계 더 나아가 플랫 파일 스키마를 동적으로 선택하는 단일 구성 요소를 구축하는 것이 좋습니다.

이렇게하려면 IProbeMessage 구현을 실행하는 플러그인 시스템을 빌드해야합니다. 각 플러그 인 인스턴스는 올바른 플랫 파일 .XSD 스키마를 반환하고 수신 된 메시지의 입력 스트림에서 형식이 일치하는지 (아마도 처음 몇 바이트를 기준으로) 체크 인하도록 구성됩니다. 그런 다음 사용자 지정 파이프 라인 구성 요소는 메시지가 인식되고 플랫 파일 .XSD 스키마가 반환 될 때까지 IProbeMessage 구현을 다양한 플러그 인에 차례로 위임합니다.

내가 여기에 긴 대답을 재현하지만, 내가 my blog에 쓴 기사의 다음 시리즈에서 봐 주시기 바랍니다 수

긴 대답. 이 게시물은 방금 위에서 설명한 정확한 기술을 사용하여 런타임시 사용할 플랫 파일 .XSD 스키마를 동적으로 결정하는 사용자 정의 플랫 파일 디스어셈블러 구성 요소 구현을 안내합니다.

, 여기에서 시작하십시오

0

귀하의 질문에 따라 각 레코드의 태그 식별자를 활용하는 방식으로 스키마를 작성하므로 기록 스키마는 처음 두 문자를 기준으로 사용됩니다. 마스터 스키마에는 모든 레코드 유형 스키마 변형이있을 수 있습니다. 보세요 herehere보세요.

0

태그 식별자라는 속성이 있지만 시나리오에 해당하는 것으로 의심됩니다. 내가 할 일은 파이프 라인 구성 요소의 파이프 라인 구성 요소 (디스어셈블러 스테이지)의 메시지 유형 매핑 테이블 어딘가에 (데이터베이스 또는 BRE) 레코드의 첫 번째 2자를 찔러 넣고 레코드 유형을 식별 한 다음 FF 디스어셈블러를 동적으로 호출하여 메시지.

0

여러 가지 방법이 있습니다.

플랫 파일 스키마 마법사에서 태그 식별자를 사용하십시오. 두 개의 문자 필드를 정의하고, 유형을 설정하고, 모든 40 가지 유형의 메시지 구조를 정의하십시오. 태그 식별자는 그들을 정렬합니다.

여러 부분으로 된/포함 된 메시지로 처리 할 수 ​​있습니다. 첫 번째 부분은 두 문자 식별자 (메시지 유형)이고 나머지 부분은 메시지의 나머지 부분입니다. 플랫 파일 파이프 라인을 사용하여 입력을 메시지로 변환하십시오. 태그 입력란을 홍보하십시오. 그런 다음 태그와 함께 첫 번째 메시지 부분을 사용하여 각 유형별로 올바른지도를 선택할 수 있습니다. 메시지 유형이 변경 될 것으로 예상되면 훨씬 좋습니다.