已接收之 EDI 訊息的協議解析、結構描述探索和授權
當BizTalk Server收到 EDI 訊息時,EDI 接收管線會執行交易夥伴合約查閱、架構探索和授權程式,以判斷如何處理訊息。
合約解析
EDI 接收管線會執行一系列的步驟來進行交易夥伴協議解析,以判斷訊息中的標頭欄位和協議定義中的屬性是否相符。 一旦BizTalk Server決定合約之後,它會決定套用至交換的檔架構, (請參閱下列) 。 它會使用與相符協議關聯的屬性以及相關的結構描述,來驗證和處理收到的訊息。
若要執行合約解決,BizTalk Server繼續如下:
將交換標頭中的傳送者辨識符號和識別碼以及接收者辨識符號和識別碼,與協議屬性中的相同項目比對,以解析協議。
如果步驟 1 未成功,則只比對交換標頭與協議屬性中的傳送者辨識符號和識別碼,以解析協議。 此外,因為第一個步驟未成功,所以假設BizTalk Server會收到訊息是安全的。 因此,BizTalk Server嘗試比對接收者限定詞和識別碼與下列專案:
值 "BT" 與 "HostX12Recvr" (對於 X12 編碼訊息) 和
值 "BT" 與 "HostEdifactRecvr" (對於 EDIFACT 編碼訊息)
重要
- BizTalk Server 2013 R2、2013 和 2010:合約設定中必須有 ISA5、ISA6、ISA7、ISA8、UNB2.1、UNB2.2、UNB3.1 和 UNB3.2 欄位。
- BizTalk Server 2009 和 2006 R2:合作物件設定中不需要 ISA7、ISA8、UNB3.1 和 UNB3.2 欄位。 如果欄位保留空白,EDI 引擎會根據 ISA5、ISA6、UNB2.1 和 UNB2.2 的值提供解析度。
- 為了支援從 BizTalk Server 2009 和 2006 R2 到較新版本BizTalk Server的解析度,會引進硬式編碼識別碼 (HostX12Recvr 和 HostEdifactRecvr) 和限定詞,以及 BT) (限定詞。
- 您的 EDIFACT 訊息應遵循訊息語法和規則 的 UNECE 指導方針 。
如果步驟 2 未成功,則使用後援協議屬性。
在第一個步驟中,針對 X12,BizTalk Server會使用下列值來進行比對:
ISA05 (傳送者辨識符號)
ISA06 (傳送者識別碼)
ISA07 (接收者辨識符號)
ISA08 (接收者識別碼)
針對 EDIFACT,BizTalk Server會使用下列值來進行比對:
UNB2.1 (寄件者識別碼)
UNB2.2 (傳送者辨識符號)
UNB3.1 (接收者識別碼)
UNB3.2 (接收者辨識符號)
用於比對的合約屬性定義于 [合約屬性] 對話方塊之方向特定合約索引標籤的 [識別碼] 頁面中。
這四個接收端和傳送端屬性可唯一識別交易夥伴協議。 使用這四個屬性,可讓您在接收端處理時有更大的彈性。 例如,這種協議解析方式可讓您將通知傳送給多個合作對象,而無須建立多個傳送埠。
如果BizTalk Server無法使用所有四個傳送者和接收者限定詞和識別碼來解析合約,它會嘗試只使用寄件者限定詞和識別碼來解析合約。 若為 X12,這些欄位是 ISA05 和 ISA06;若為 EDIFACT,這些欄位則是 UNB2.1 和 UNB2.2。 如同符合傳送者和接收者屬性,BizTalk Server會比對交換標頭中的值,以及合約屬性定義于 [合約屬性] 對話方塊之 [方向特定合約] 索引標籤的 [識別碼] 頁面中定義的合約屬性。 如果只使用傳送者限定詞和識別碼來解析合約,接收者限定詞和識別碼應該未定義于 [ 合約屬性 ] 對話方塊的雙向合約索引標籤中。
如果找不到合約,則除非埠設定需要驗證,否則BizTalk Server會使用後援交易夥伴合約。 如果驗證失敗,則埠設定需要驗證 (如果驗證失敗,或在接收埠屬性) 的 [一般] 頁面上選取[保留訊息時保留訊息],則接收埠所接收的任何交換都需要合約。 在此狀況下,如果協議不是透過比對交換標頭和協議屬性來解析的,則不允許使用後援協議屬性來判斷協議。 如果找不到協議,交換會視為驗證失敗並遭擱置。
注意
EDI 管線中的訊息會進入協議解析的後續步驟,直到訊息在協議為啟用狀態的步驟中獲得解析為止。 例如,如果訊息在協議解析的第一個步驟獲得解析,但協議處於停用狀態,則訊息會進入後續解析步驟。
結構描述探索
在BizTalk Server判斷解析為訊息的合約之後,它必須決定它應該用來驗證和處理訊息的架構。 它會使用單向 ([合約屬性] 對話方塊之 [本機主機設定] 頁面中識別的屬性) 合約索引標籤。
為判斷結構描述,BizTalk Server 必須先判斷結構描述命名空間。 EDI 反組譯程式會針對隨附于BizTalk Server的標準架構使用預設命名空間,或決定要用於自訂架構的命名空間。
[合約屬性] 對話方塊之 [單向合約設定] 索引標籤的 [本機主機設定] 頁面可讓您設定值格線,以判斷自訂命名空間。 如果在該方格中找不到相符專案,EDI 反組譯程式會使用 [ 目標命名空間 ] 欄位中標示為預設資料列的預設命名空間。
X12 結構描述探索
若為 X12 編碼訊息,BizTalk Server 會使用內送交換之標頭的應用程式傳送者識別項 (GS02) 和交易集識別碼 (ST01) 來判斷自訂命名空間。 它會嘗試在 [本機主機設定] 頁面的 [本機主機設定] 頁面的 [自訂目標命名空間] 方格中,尋找這些值與 GS02 和 ST01 屬性的值之間的相符專案, ([合約屬性] 對話方塊的 [交易集設定] 索引標籤底下) 。 如果找到相符項目,它會使用格線同一列中指定的目標命名空間,來判斷用來驗證和處理訊息的結構描述。 如果未判斷出目標命名空間,則會使用預設目標命名空間。 如果未在標示為預設資料列的 [目標命名空間] 欄位中識別任何命名空間,BizTalk Server將會使用 X12 編碼訊息的後援合約屬性中所識別的目標命名空間,預設為 http://schemas.microsoft.com/BizTalk/Edi/X12/2006
。
針對 X12 交換,在探索目標命名空間之後,BizTalk Server使用下列資訊來決定架構:
找到的目標命名空間
ST03 (如果 GS07 == X - Accredited Standards Committee X12) 的前五個字元代表的版本/版次。 如果 ST03 不存在/無效,或未產生結構描述解析,則使用 GS08 或 ISA12 (如果 GS07 != X) 的前五個字元判斷版本。
ST01 中的 DocType
「EDI 解譯器」會將編碼類型、版本/版次和 DocType 串連在一起來判斷結構描述名稱,例如 "X12_00401_864"。 然後,它會串連具有架構名稱的目標命名空間,例如 。
http://schemas.microsoft.com/BizTalk/Edi/X12/2006/X12#X12_00401_864
針對傳入的 HIPAA 837 交換,BizTalk Server支援三個 HIPAA 837 架構:
837 結構描述 | 版本 4010 中的 GS08 值 | 版本 5010 中的 GS08/ST03 值 |
---|---|---|
Claim-Dental_837D | 004010X097A1 | 005010X224A1 |
Claim-Institutional_837I | 004010X096A1 | 005010X223A1 |
Claim-Professional_837P | 004010X098A1 | 005010X222 |
注意
在 HIPAA 版本中,對於交易集 278 (健康照護服務檢視),要求與回應配對會針對 GS08 與 ST01 共用相同的值。 依據 BHT02 欄位中的觸發值,您可以區別版本 5010 中的 278 要求/回應:
- BHT02 中的 01、13 與 36 的任一個值各代表一個健康照護服務檢視要求
2. BHT02 中的 11 表示醫療保健服務檢閱回應
EDIFACT 結構描述探索
若為 EDIFACT 編碼訊息,BizTalk Server 判斷自訂命名空間的方式是使用內送交換之標頭的訊息類型 (UNH2.1)、訊息版本號碼 (UNH2.2)、訊息版次號碼 (UNH2.3)、指定代碼 (UNH2.5)、功能群組識別碼 (UNG2.1) 以及應用程式傳送者代碼辨識符號 (UNG2.2)。 然後,它會嘗試在這些值與 UNH2.1、UNH2.2、UNH2.3、UNH2.5、UNG2.1 和 UNG2.2 屬性的 [自訂目標命名空間] 方格中尋找相符專案, ([合約屬性] 對話方塊之雙向合約索引標籤的 [交易集設定]) 索引標籤底下 (。 如果找到相符項目,它會使用格線同一列中指定的目標命名空間,來判斷用來驗證和處理訊息的結構描述。 如果未判斷出目標命名空間,則會使用預設目標命名空間。 如果未在標示為預設資料列的 [目標命名空間] 欄位中識別任何命名空間,BizTalk Server將會使用 EDIFACT 編碼訊息的後援合約屬性中所識別的目標命名空間,預設為 http://schemas.microsoft.com/BizTalk/Edi/EDIFACT/2006
。
針對 EDIFACT 交換,一旦找到目標命名空間,BizTalk Server 會使用下列資訊判斷結構描述:
找到的目標命名空間。
UNH2.2 中的訊息版本號碼。
UNH2.3 中的訊息版次號碼。
UNH2.1 中的訊息類型。
UNH2.5 中的指定代碼。
「EDI 解譯器」會將編碼類型、版本、版次和訊息類型串連在一起來判斷結構描述名稱,例如 " EFACT_D94A_CONTEN"。 然後,它會串連具有架構名稱的目標命名空間,例如 。
http://schemas.microsoft.com/BizTalk/Edi/Edifact/2006/EFACT#EFACT_D94A_CONTEN
如果訊息中有 UNH2.5,EDI 解譯器會先嘗試使用結構描述名稱中的 UNH2.5 值 (例如,EFACT_D94A_CONTEN_TEST) 來尋找相符的結構描述。 如果找不到相符的結構描述,EDI 解譯器會回復為尋找不含 UNH2.5 值的結構描述。
授權
BizTalk Server會檢查針對訊息中欄位所定義的授權和安全性欄位值。 如果有相符的項目,BizTalk Server 會擱置交換。 若為 EDIFACT 編碼訊息,這些欄位是收件者參考密碼 (UNB6.1 和 UNB6.2)。 若為 X12 編碼訊息,這些欄位則是 [授權辨識符號和資訊] (ISA1-2) 以及 [安全性辨識符號和資訊] (ISA3-4)。