本主題描述 EDI 傳送管線中處理的已知問題。
X12 隱含的小數點會導致長度驗證失效
癥狀
當EDI傳送管線將中繼 XML 中的base-10數值轉換成傳出EDI交換中 Nn 格式的數位時,XML 交換會失敗長度驗證。
可能的原因
當序列化 X12 編碼的 EDI 交換資料時,EDI 傳送管線一律會將十進位制數字值轉換成具有隱含小數點之 Nn 格式的數字。 例如,如果中繼 XML 檔案中有 12.34 的值,當 EDI 傳送管線指定為數值類型 N2 時,EDI 傳送管線會在 EDI 交換中將它轉換成 1234。 base-10 數字值的長度會比 Nn 格式的數字長度多一。 如果格式為 Nn 的數位長度達到最大值,中繼 XML 中的十進位數值可能會導致 XML 長度驗證失敗。
這只是有關 X12 編碼交換的問題。
解決方法
將數值 1 增加至 XML 最大長度值。
控制編號可能需要重設、封存或清除
如果有任何控制編號達到字段的長度限制限制,BizTalk Server 將會引發錯誤並暫停交換。 您必須重設在 [EDI 屬性] 或 [EDI 全域屬性] 對話框中輸入的控制編號。
控制編號會儲存在 BizTalk MessageBox 資料庫的 dbo.EdiSequenceNumbers 表格中。 您應該適當地清除數據表中的控制編號或封存控制編號,以管理此資料庫數據表。
您也可以在 [EDI 屬性] 對話框中選取 [當超出範圍時重設為下限] 來啟用自動重設控制編號。
Context 屬性名稱中的數據元素名稱包含底線,而不是句點
EDI 區段內數據元素的名稱包含句點,例如 UNB2.1,這是 UNB2 Sender 區段的識別字段。 不過,當數據元素名稱包含在 EDI 內容屬性的一部分時(例如,在傳送埠的篩選表示式中),句點會取代為底線。 例如,寄件人識別數據元素的內容屬性是EDI。UNB2_1,而不是 EDI。UNB2.1. 原因是語境屬性名稱中無法支援句點。
來自數據元素的內容屬性值不得在篩選表達式中包含前置或尾端空格
如果 EDI 交換的信封中的數據元素包含前置或尾端空格,而接收管線會升級具有該數據元素值的內容屬性,則接收管線會從內容屬性中移除前置或尾端空格。 因此,如果您使用該內容屬性建立篩選表達式,則必須輸入不包含前置或尾端空格之屬性的值。 如果您的篩選表達式包含前置或尾端空格,篩選表達式將不會在與內容屬性相符的情況下解析,而內容屬性不會包含前置或尾端空格。
將預設方作為保留交換的交換接收者屬性將導致傳送管線失敗
如果 BizTalk Server 收到必須保留的批次交換(在發生錯誤時會暫停交換),而交換接收者的屬性設定為其預設值,則訂閱此交換的傳送管線將會失敗。 這些屬性,例如 ISA5、Sender 限定符和 ISA6、Sender 標識碼,必須設定為有效值。 BizTalk Server 會張貼錯誤,指出訊息因合作對象設定無效而無法串行化。 此處理不正確,因為保留的交換在其標頭中有必要的組態設定,例如發件者限定符和寄件人標識符。
如果 Send-Side 合作物件或全域設定指定了不同的十進位表示法,則訊息中的十進位表示法將會被更改。
如果交換中使用的十進位表示法與 UNA3 合作對象屬性為傳出訊息指定的十進位表示法不同,BizTalk Server 會在串行化交換時,變更交換信封中所使用的十進位表示法。 如果使用 UNA3 全域屬性,而不是 UNA3 合作對象屬性,也會發生這種情況。 例如,如果傳入訊息中使用的十進位表示法是句點,而 UNA3 合作物件屬性或 UNA3 全域屬性會決定傳出訊息的小數表示法指定逗號,BizTalk Server 會將傳出訊息中的十進制表示法變更為逗號。
無法從編排程序內執行 EDI 傳輸管道
在 BizTalk Server 中,您通常會在協調流程的運算式圖形內執行傳送管線。 不過,這不適用於 EDISend 管線或 AS2EdiSend 管線。 這些管線必須在傳送埠內執行。 如果您嘗試在協調流程的 Expression 圖形中執行 EDISend 管線或 AS2EdiSend 管線,管線將不會系結至傳送埠,而且訊息將會暫停。
BizTalk EDI 應用程式不得修改
BizTalk EDI 應用程式中的項目不得修改或刪除。 如果修改此應用程式,則無法藉由取消設定及重新設定EDI和AS2功能,還原為原始應用程式。
使用功能群組標頭方格中的預設列,可能導致互換標頭與群組標頭之間的Message-Type不符。
如果傳出EDIFACT編碼交換的 UNH2.1 值與 UNG 和 UNH 區段定義頁面中的表格中“For message type UNH2.1”值不匹配,則訊息中輸入的 UNG1 值可能不會對應於 UNH2.1 的值。
這是因為即使訊息的 UNH2.1 元素與預設數據列不符合,BizTalk 也會將預設數據列中 UNG1 的值填入方格中的訊息。
如果傳出 X12 編碼交換的 ST1 值不符合 GS 和 ST 區段定義頁面中方格中的 「For ST1」 值,則會根據 ST1 的值動態判斷訊息中輸入的 GS1 值。
Data 元素中的無效字元
癥狀
使用 EDI 傳送管線傳送 EDI 交換時,您可能會在應用程式事件記錄檔中收到錯誤,指出數據元素中有「無效的字元」。
可能的原因
如果裝載數據中包含的字元也用來做為分隔符,就可能發生此錯誤。 例如,如果您使用 『:』 字元做為元件分隔符,但承載數據也包含 『:』 字元。
這隻是 X12 編碼交換的問題。
解決方法
使用 EDI 合作物件屬性之 ISA 區段定義 頁面中的承載數據分隔符取代設定,以指定在發送交換時,應以指定的取代字元取代承載數據中找到的分隔符。
例如,選擇 在承載中以 '|' 符號取代分隔符,然後輸入 '|' 符號,當使用 EDI 傳送管線進行資料交換時,將會以 '|' 符號取代荷載數據中的任何分隔符。
另請參閱
EDI 處理的已知問題
BizTalk Server 如何傳送 EDI 訊息
逐步解說(X12):傳送 EDI 交換作業