基本和複雜對應作業
BizTalk 對應工具提供各種對應實例的解決方案,範圍從簡單父-子樹狀結構類型作業到涉及迴圈記錄和階層的詳細複雜作業。 對應實例的複雜度是根據您的喜好設定和商務需求;XML 結構描述定義 (XSD) 語言提供相當大的彈性讓您定義結構格式。 幾乎所有對應實例都可分為兩種類別:基本對應和複雜對應。
基本對應
基本對應是您可以建立的最常見對應類型。 在基本對應中,輸入和輸出項目都會有一對一的關係。 輸入項目會對應至一個輸出項目,且就只能對應至一個輸出項目。 雖然有許多類型的轉換和轉譯可以進行基本對應,例如使用多個 運算質 和串聯運算質來操作所複製的值,但基礎案例仍然相當簡單。 基本對應作業同時也包含將來自兩個不同父記錄 (僅發生一次) 的欄位對應至目的結構描述中之單一父記錄下的欄位。
複雜對應
複雜對應牽涉到架構樹狀結構中 Record 或 Field Element 節點的單一實例多次發生的記錄或欄位。 這類節點的 Max Occurs 屬性設定為大於 1 (1 的值) ,表示實例訊息中可能有一個以上的對應元素。 當 BizTalk 對應使用這種類型的變數計數對應 (也稱為迴圈) 時,可延伸樣式表語言 (XSL) 樣式表單編譯器必須能夠判斷要逐一查看以產生所需輸出的適當 迴圈 路徑。
一般而言,您可以將來源結構描述之迴圈記錄中的欄位連結至目的結構描述之迴圈記錄中的欄位。 輸入執行個體訊息中的對應項目數會決定在輸出執行個體訊息中所建立的項目數。 例如,從範例來源與目的結構描述考量下列 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>
在這些分割中:
SrcLoopingRecord是輸入實例訊息中的 記錄 節點,可以從一到五次發生。 它也會包含子 Field 元素 節點 Field1 (字串) , 而 Field2 (針對其父代的每個實例一次發生的整數) 。
DstLoopingRecord是輸出實例訊息中的 記錄 節點,可能會發生零 (0) 或多次未系結。 它也包含 FieldA 子節點 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>
輸入實例訊息中 SrcLoopingRecord 元素的出現次數 (3) 決定輸出實例訊息中 DstLoopingRecord 元素的出現次數。
BizTalk 對應工具不支援使用多個迴圈路徑的對應類型。 這類型的對應涉及將來自來源結構描述中之兩個或更多迴圈記錄的欄位,對應至目的結構描述之單一迴圈記錄內的欄位。 這會有一個問題,就是沒有有效的方式可判斷在輸出執行個體訊息中所產生的項目數目。 多個迴圈路徑會導致出現對應編譯警告,指出目的節點具有多個來源迴圈路徑。 然而,這只是一個警告,並會使用第一個來源迴圈路徑中的重複數目來判斷在輸出執行個體中所產生的項目數目。 您可以使用 迴圈 運算質,明確控制迴圈行為。
Microsoft BizTalk Server引進了一種稱為資料表驅動迴圈的新迴圈。 當您的輸出執行個體訊息必須以來自輸入執行個體訊息 (結合一或多個條件約束、來源結構描述的連結或運算質) 的資料為基礎時,表格驅動迴圈就十分有用。 在這類情況下,輸出執行個體訊息可以有多個記錄以輸入執行個體訊息之單一記錄的資料為基礎 (而該輸入執行個體訊息會結合不同條件約束),或可以有多個記錄以輸入執行個體訊息之多個記錄的資料為基礎。 如需使用 資料表迴圈 和資料表擷 取器 運算質進行資料表驅動迴圈的詳細資訊,請參閱 資料表迴圈和資料表擷取器運算質。