다음을 통해 공유


파이프라인 구성 요소의 스키마 확인

디스어셈블러 및 어셈블러 파이프라인 구성 요소는 XSD 스키마를 사용하여 메시지를 처리합니다. XSD 스키마에는 승격 속성 목록, 고유 필드, 플랫 파일 메시지의 주석, XML 봉투(Envelope)의 주석 등의 정보가 포함되어 있습니다.

표준 디스어셈블러 및 어셈블러 구성 요소는 스키마 유형 이름 및 메시지 유형을 사용하여 배포된 스키마를 검색합니다. 일부 구성 요소는 스키마 유형 이름과 메시지 유형 둘 다를 사용하여 검색하지만 Flat File Disassembler와 같은 다른 구성 요소는 스키마 유형만 사용하여 검색합니다.

XML 메시지를 받는 파이프라인 구성 요소는 메시지 루트 요소 및 네임스페이스를 검사하여 메시지 유형을 확인합니다. 예를 들어 다음 XML의 메시지 형식은 입니다 http://MyDocument.org#MyDocument.

<ns0:MyDocument xmlns:ns0="http://MyDocument.org">  
  
</ns0:MyDocument>  

스키마에 정의된 네임스페이스가 없는 경우 메시지 유형은 "<rootNode>"입니다. 예를 들어 위 XML 예에 네임스페이스가 없다면 메시지 유형은 "MyDocument"가 됩니다.

표준 파이프라인 구성 요소는 메시지 유형을 사용하여 데이터베이스에서 해당 스키마를 검색합니다. 파이프라인 구성 요소에서 인식할 수 없는 메시지를 허용하도록 설정되어 있지 않는 한 기본 XML 수신 및 송신 파이프라인은 항상 메시지 XML 콘텐츠에서 런타임에 동적으로 검색되는 메시지 유형을 사용하여 로드할 스키마를 결정합니다. XML Disassembler는 이 메커니즘을 사용하여 메시지 봉투를 제거할 수 있습니다. 그러나 XML Assembler에서 나가는 메시지의 봉투를 만들려면 사용할 봉투 스키마를 알아야 합니다.

파이프라인 디자이너 내에서 XML Assembler의 구성 속성에 봉투 스키마를 지정합니다.

스키마를 검사하는 방법

XmlDisassembler에서 직접 스키마를 지정하지 않는 경우 스키마는 다음 방식으로 검사됩니다.

  1. 먼저 배포된 스키마에 대한 정규화되지 않은 검색은 루트 노드 이름 및 네임스페이스(예: http://MyNamespace#MyRoot)를 사용하여 만들어집니다. 고유한 일치 항목이 발견되면 스키마가 검사됩니다. 여러 일치 항목이 발견되고 버전 번호로만 서로 구별되며 하나만 활성화되면 해당 버전이 사용되고 스키마가 검사됩니다. 여러 응용 프로그램에서 동일한 스키마가 활성화되면 여러 활성 스키마가 검색되며 아래의 단계 2에 따라 검색이 계속됩니다.

  2. 1단계에서 resolve 수 없는 일치 항목이 여러 개 있는 경우 파이프라인이 실행 중인 어셈블리에 의해 검색이 정규화됩니다. 파이프라인이 실행 중인 동일한 어셈블리 내에서 고유한 스키마가 발견되면 스키마가 확인됩니다.

  3. 일치하는 항목이 여전히 없으면 스키마를 검사하는 데 게시자가 사용됩니다. 루트 노드, 네임스페이스 및 공개 키 토큰을 사용하여 검색 범위를 좁힙니다. 이 검색에서 고유한 스키마가 발견되면 스키마가 검사됩니다.

  4. 스키마를 확인할 수 없습니다. 고유한 스키마를 찾을 수 없다는 오류가 반환됩니다.

    SQL Server 데이터 정렬 및 대/소문자 구분이 스키마 해상도에 미치는 영향을 포함한 기타 고려 사항은 네임스페이스 관리를 참조하세요.

    XML Assembler에서 봉투를 만들거나 Flat File Assembler에서 헤더 및 트레일러를 만들려면 다음 중 하나를 수행하십시오.

  • 사용자 지정 송신 파이프라인을 만들고 XML Assembler의 구성 속성에서 봉투에 대한 스키마를 지정합니다. 이 작업은 파이프라인 디자이너에서 수행합니다.

  • BizTalk Server 관리 콘솔에서 송신 포트의 송신 파이프라인 속성에 대한 XMLTransmit를 지정합니다. 줄임표를 클릭하여 파이프라인 속성을 구성하고 EnvelopeDocSpecNames 속성에 봉투에 대한 스키마를 지정합니다.

    단계별 배포를 수행하는 경우 또는 여러 시나리오에 고유한 메시지 유형이 없는 경우처럼 여러 버전의 동일한 스키마가 의도적으로 또는 우연히 데이터베이스에 배포된 경우 메시지 유형을 사용하여 스키마를 검사할 수 없습니다. 메시지 유형으로 스키마 검사를 수행하지 못하면 이벤트 로그에 “스키마 모호성” 오류가 추가됩니다. 메시지 유형으로 스키마를 검사하려면 다음 중 하나를 수행하십시오.

  • 같은 BizTalk 프로젝트의 스키마를 사용자 지정 파이프라인으로 정의합니다.

  • 파이프라인이 포함된 어셈블리와 같은 키를 사용하여 스키마가 있는 어셈블리에 서명합니다.

  • 파이프라인 구성 요소에서 명시적으로 스키마를 지정합니다. 메시지 유형 이름은 BizTalk 관리 데이터베이스 전체에서 고유해야 합니다.

중요

같은 어셈블리의 스키마에서 메시지 유형을 공유하는 경우 모호성 확인 제한 때문에 해당 스키마를 같은 파이프라인 구성 요소 어셈블리에 포함해서는 안 됩니다. 대신 파이프라인 구성 요소 어셈블리 외부의 스키마를 참조해야 합니다. 스키마와 파이프라인 구성 요소가 같은 어셈블리에 있으면 사용자 지정 파이프라인의 파이프라인 구성 요소에서 스키마 유형 이름을 명시적으로 지정한 경우에도 모호성을 제대로 확인할 수 없습니다.

참고

IPipelineContext를 사용하여 배포된 스키마를 가져오는 사용자 지정 파이프라인 구성 요소는 스키마 유형 이름이 런타임에 구성 요소에 대해 지정되지 않은 경우에만 스키마 유형별로 스키마를 가져오고 구성 요소가 실행될 때 스키마 유형 정보를 사용할 수 없는 경우에만 메시지 유형별로 스키마를 가져와야 합니다.

참고 항목

파이프라인 구성 요소