기본 및 복잡한 매핑 작업
BizTalk 맵 편집기는 단순한 부모-자식 트리 유형 작업에서부터 레코드 및 계층 구조 반복을 수행하는 자세하고 복잡한 작업에 이르는 다양한 매핑 시나리오에 대한 솔루션을 제공합니다. 매핑 시나리오의 복잡성은 기본 설정 및 비즈니스 요구 사항에 따라 달라집니다. XSD(XML 스키마 정의) 언어는 구조화된 형식을 정의하는 데 상당한 유연성을 제공합니다. 거의 모든 매핑 시나리오는 기본 매핑과 복잡한 매핑의 두 가지 범주 중 하나로 분류됩니다.
기본 매핑
기본 매핑은 사용자가 만들 수 있는 가장 일반적인 유형의 매핑입니다. 기본 맵에서는 입력 항목과 출력 항목이 일대일 관계를 유지합니다. 즉, 하나의 입력 항목은 하나의 출력 항목에만 매핑됩니다. 여러 펑토이드 및 계단식 펑토이드 를 사용하여 복사되는 값을 조작하는 것과 같은 기본 매핑을 통해 많은 유형의 변환 및 변환이 가능하지만 기본 시나리오는 비교적 간단합니다. 또한 기본 매핑 작업에는 한 번만 발생하는 서로 다른 두 부모 레코드의 필드를 대상 스키마의 단일 부모 레코드 아래에 있는 필드로 매핑하는 작업이 포함됩니다.
복잡한 매핑
복합 매핑에는 스키마 트리에 있는 Record 또는 Field 요소 노드의 단일 instance 대해 여러 번 발생하는 레코드 또는 필드가 포함됩니다. 이러한 노드에는 Max Occurs 속성이 1보다 큰 값으로 설정되어 instance 메시지에 두 개 이상의 해당 요소가 있을 수 있음을 나타냅니다. BizTalk 맵에서 이러한 유형의 변수 개수 매핑(루프라고도 함) 을 사용하는 경우 XSL(Extensible Stylesheet Language) 스타일시트 컴파일러는 반복할 적절한 루프 경로를 결정하여 필요한 출력을 생성할 수 있어야 합니다.
일반적으로 소스 스키마의 반복 레코드 필드를 대상 스키마의 반복 레코드 필드에 연결할 수 있습니다. 입력 인스턴스 메시지의 해당 요소 수는 출력 인스턴스 메시지에 만들어지는 요소 수를 결정합니다. 예를 들어 다음과 같은 소스 스키마 XSD 조각과 대상 스키마 XSD 조각이 있다고 가정합니다.
소스 스키마 조각
<xs:element minOccurs="1" maxOccurs="5"
name="SrcLoopingRecord">
<xs:complexType>
<xs:sequence>
<xs:element name="" type="xs:string" />
<xs:element name="" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
대상 스키마 조각
<xs:element minOccurs="0" maxOccurs="unbounded"
name="DstLoopingRecord">
<xs:complexType>
<xs:sequence>
<xs:element name="" type="xs:string" />
<xs:element name="" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
이 조각의 내용은 다음과 같습니다.
입력 instance 메시지의 레코드 노드인 SrcLoopingRecord는 1~5번 발생할 수 있습니다. 또한 부모 instance 대해 한 번씩 발생하는 자식 Field 요소 노드 Field1(문자열) 및 Field2(정수)를 포함합니다.
출력 instance 메시지의 레코드 노드인 DstLoopingRecord는 바인딩되지 않은 0번 이상 발생할 수 있습니다. 또한 부모 instance 대해 한 번씩 발생하는 자식 Field 요소 노드 FieldA(문자열) 및 FieldB(정수)를 포함합니다.
Field1은 FieldA에 매핑되고 Field2는 FieldB에 매핑되며 이 매핑을 다음과 같은 입력 인스턴스 메시지 조각에서 처리한다고 가정하면 다음과 같은 출력 인스턴스 메시지 조각이 생성됩니다.
입력 인스턴스 메시지 조각
<SrcLoopingRecord>
<Field1>A string</Field1>
<Field2>10</Field2>
</SrcLoopingRecord>
<SrcLoopingRecord>
<Field1>Another string</Field1>
<Field2>11</Field2>
</SrcLoopingRecord>
<SrcLoopingRecord>
<Field1>A ball of string</Field1>
<Field2>12</Field2>
</SrcLoopingRecord>
출력 인스턴스 메시지 조각
<DstLoopingRecord>
<FieldA>A string</FieldA>
<FieldB>10</FieldB>
</DstLoopingRecord>
<DstLoopingRecord>
<FieldA>Another string</FieldA>
<FieldB>11</FieldB>
</DstLoopingRecord>
<DstLoopingRecord>
<FieldA>A ball of string</FieldA>
<FieldB>12</FieldB>
</DstLoopingRecord>
입력 instance 메시지(3)에서 SrcLoopingRecord 요소의 발생 횟수는 출력 instance 메시지에서 DstLoopingRecord 요소의 발생 횟수를 결정합니다.
BizTalk 맵 편집기에서 지원하지 않는 매핑 유형은 다중 반복 경로를 사용하는 매핑입니다. 이러한 유형의 매핑은 소스 스키마에 있는 둘 이상의 반복 레코드 필드를 대상 스키마에 있는 단일 반복 레코드 필드로 매핑하는 작업과 관련이 있습니다. 출력 instance 메시지에서 생성할 요소 수를 결정하는 효과적인 방법은 없습니다. 다중 반복 경로를 사용하면 대상 노드에 여러 소스 반복 경로가 있다는 맵 컴파일 경고가 발생합니다. 그러나 이는 경고에 불과하며 첫 번째 소스 반복 경로의 반복 횟수를 사용하여 출력 인스턴스 메시지에 생성되는 요소 수를 결정할 수 있습니다. Looping 펑토이드를 사용하여 반복 동작을 명시적으로 제어할 수 있습니다.
Microsoft BizTalk Server 테이블 기반 루핑이라는 새로운 종류의 루핑을 도입했습니다. 테이블 기반 반복은 출력 인스턴스 메시지가 하나 이상의 상수, 소스 스키마의 링크 또는 펑토이드와 결합된 입력 인스턴스 메시지의 데이터를 기반으로 해야 하는 경우에 유용합니다. 이 경우 출력 인스턴스 메시지에는 서로 다른 상수와 결합된 입력 인스턴스 메시지의 단일 레코드 데이터 또는 입력 인스턴스 메시지의 여러 레코드 데이터를 기반으로 하는 여러 레코드가 있을 수 있습니다. 테이블 루핑 및 테이블추출기 펑토이드를 사용하는 테이블 기반 루핑에 대한 자세한 내용은 테이블 루핑 및 테이블 추출기 펑토이드를 참조하세요.