> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# EDIFACT 端口

> 知行之橋EDIFACT 端口的配置和使用指南。

EDIFACT 端口可以從 XML 生成 EDIFACT 文件，也可以將 EDIFACT 文件轉換為 XML。

## 核心功能

* **EDIFACT 與 XML 格式的雙向轉換**：支援兩種格式之間的完整互轉。
* **全面的交換頭驗證與生成**：確保報文結構的合規性。
* **支援多個 EDIFACT 版本**：具有自動架構檢測功能。
* **交換確認與功能性確認支援**：實現訊息收發的閉環確認。

## 概覽

接收 EDIFACT 文件時，EDIFACT 端口會驗證 EDIFACT 交換頭並將 EDIFACT 文件轉換為 XML。這作為一個暫存步驟非常有用，因為 XML 是 知行之橋 在流程中處理資料的主要格式。EDIFACT 端口會自動讀取輸入檔案以確定合適的 EDIFACT 架構，然後根據該架構解析文件。

生成 EDIFACT 文件時，EDIFACT 端口會將 XML 轉換為 EDIFACT 文件語法並應用相應的交換頭。在流程的其他位置取得並轉換 XML 資料後，這通常是建立 EDIFACT 文件的最後一步。

> [!NOTE]
>
> 啟用 **Test Indicator** 設定可以避免交換頭驗證。

EDIFACT 端口還可以自動為傳入的 EDIFACT 文件生成確認。有關更多資訊，請參閱 [EDIFACT ACK](#edifact-ack)。

## 必要條件

開始之前，請確保已為需要處理的文件型別安裝正確的架構。EDIFACT 端口原生支援以下架構定義：4.1、D03A、D04A、D07A、D96A、D96B、D97A、D99A 和 D99B。你可以在 知行之橋 安裝目錄的 `app_data/edifact_schemas` 目錄中找到它們。如果需要其他架構，可以聯絡我們免費下載額外的架構檔案。

下載並解壓 zip 存檔後，將整個資料夾放入 `app_data/edifact_schemas` 目錄下命名合適的子目錄中。

## 端口配置

本節包含所有可配置的端口屬性。

### 設定

#### 轉換配置

*與端口核心操作相關的設定。*

| 設定 | 描述 |
| - | - |
| **端口 Id** | 端口的靜態、唯一識別碼。 |
| **端口型別** | 顯示端口名稱及其用途描述。 |
| **端口描述** | 一個可選欄位，用於提供端口及其在流程中角色的自由格式描述。 |
| **轉換型別** | 端口是將 EDIFACT 文件轉換為 XML，還是從 XML 生成 EDIFACT 文件。 |
| **動態處理交易夥伴** | 啟用後，端口會自動從 EDI 交易中識別並跟蹤交易夥伴關係。停用後，必須手動定義夥伴關係。有關更多資訊，請參閱 [EDI 交易夥伴索引標籤](#edi-交易夥伴索引標籤)。 |

#### EDI 交易夥伴

| 設定 | 描述 |
| - | - |
| **交易夥伴方標識 (UNB2.1)** | EDIFACT 通訊中標識傳送方的唯一 Id。生成 EDIFACT 文件時，此項應為本方標識。僅在未勾選 **動態處理交易夥伴** 時適用。 |
| **個人標識 (UNB3.1)** | EDIFACT 通訊中標識接收方的唯一 Id。生成 EDIFACT 文件時，此項應為交易夥伴方的標識。僅在未勾選 **動態處理交易夥伴** 時適用。 |

#### 交換頭配置

*與 EDIFACT 交換頭相關的設定。從 XML 生成 EDIFACT 文件時，這些設定用於生成文件頭。解析 EDIFACT 文件時，這些設定用於驗證傳入文件。*

| 設定 | 描述 |
| - | - |
| **語法識別碼 (UNB1.1)** | 標識 EDIFACT 文件使用的字元集。 |
| **語法版本 (UNB1.2)** | 與 **語法識別碼** 結合使用，用於確定 EDIFACT 文件中使用的語法。根據此處的選擇，其他交換設定選項會在[進階頁面](#進階頁面)上顯示或隱藏。 |
| **交易夥伴方程式碼限定符 (UNB2.2)** | **傳送方標識** 的限定符，用於為該值提供上下文（例如 EAN 位置編號）。 |
| **個人程式碼限定符 (UNB3.2)** | **接收方標識** 的限定符，用於為該值提供上下文（例如 EAN 位置編號）。 |
| **測試指示器 (UNB11)** | 交換處於測試模式還是生產模式。勾選後，接收文件時不會驗證交換頭。 |
| **功能群組** | 勾選此項可自動將傳送方和接收方識別碼新增到 **進階頁面** 上的[功能群組配置](#功能群組配置)。 |

#### ACK

*與生成和請求確認相關的設定。*

| 設定 | 描述 |
| - | - |
| **技術性 ACK（CONTRL）** | 接收時是否傳回技術性 CONTRL ACK，傳送時是否請求技術性 CONTRL ACK。技術性確認用作交換的回執。 |
| **功能性 ACK（CONTRL）** | 接收時是否傳回功能性 CONTRL ACK，傳送時是否請求功能性 CONTRL ACK。功能性確認用於指示接收的交換已被接受或拒絕。 |

### 範例檔案索引標籤

*上傳範例檔案可以方便地在任何連線的 CSV Map 或 XML Map 端口中進行對映。*

使用 **範例檔案** 索引標籤生成用於 [CSV Map](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/map.md) 或 [XML Map](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/xml-map/xml-map.md) 端口的源或目標 XML 範本。單擊 **新增範例檔案**。

1. 如果您已有反映資料預期格式和結構的範例檔案，請選擇 **檔案上傳** 並瀏覽到您的檔案。或者，選擇 **手動建立** 直接在應用程式中建立檔案。如果您選擇 **手動建立**，請為範例檔案命名。單擊 **下一步**。

2. 如果您瀏覽到現有檔案，**檢視檔案** 索引標籤將填充其內容。如果您選擇手動建立檔案，請在此索引標籤上輸入範例資料。單擊 **下一步**。

3. **翻譯和預覽** 索引標籤顯示將範例資料轉換為 XML 的預覽。當您對範例滿意時，單擊 **新增**。

### 進階頁面

#### EDI 分隔符號

*指定用於分隔元素、段等內容的字元。*

| 設定 | 描述 |
| - | - |
| **資料元素分隔符號** | 分隔文件中各個資料元素的字元。 |
| **元件元素分隔符號** | 分隔文件中複合資料結構內元素的字元。 |
| **段終止字元** | 指示文件中段結尾的字元。 |
| **釋放字元** | “釋放”（轉義）下一個字元、覆蓋其通常含義的字元。只要保留字元前面帶有釋放字元，它就可以作為資料出現在文件中。 |
| **重複元素分隔符號** | 標識元素值重複的字元。 |
| **字尾** | 追加到 **段終止字元** 後，用於區分段。 |

#### 交換頭配置

*與 EDIFACT 交換頭相關的其他設定。這些選項會根據“設定”索引標籤上指定的 **語法版本** 顯示或隱藏。*

| 設定 | 描述 |
| - | - |
| **服務程式碼清單目錄版本號 (UNB1.3)** | 進一步指定 EDIFACT 文件中使用的語法。僅適用於 EDIFACT 語法版本 4。 |
| **字元編碼 (UNB1.4)** | 指定字元的編碼方式（例如 ASCII 或 UTF-8）。僅適用於 EDIFACT 語法版本 4。 |
| **反向路由地址 (UNB2.3)** | 傳送方系統中可選的地址，用於接收回應交換。僅適用於版本 4 之前的 EDIFACT 語法版本。 |
| **交易夥伴方內部 ID (UNB2.3)** | 額外的傳送方標識，用於促進回應交換的內部路由。僅適用於 EDIFACT 語法版本 4。 |
| **交易夥伴方內部子標識 (UNB2.4)** | 需要子級標識時，進一步標識傳送方。僅適用於 EDIFACT 語法版本 4。 |
| **路由地址 (UNB3.3)** | 接收方系統中可選的地址，用於指定交換的路由。僅適用於版本 4 之前的 EDIFACT 語法版本。 |
| **個人內部標識 (UNB3.3)** | 額外的接收方標識，用於促進接收交換的內部路由。僅適用於 EDIFACT 語法版本 4。 |
| **個人內部子標識 (UNB3.4)** | 需要子級標識時，進一步標識接收方。僅適用於 EDIFACT 語法版本 4。 |
| **交易夥伴方密碼 (UNB6.1)** | 用於存取接收方系統的引用或密碼。 |
| **交易夥伴方密碼限定符 (UNB6.2)** | **交易夥伴方密碼** 的限定符（如果適用），用於提供上下文。 |
| **應用參考編號 (UNB7)** | 標識交換中的訊息所涉及的應用程式組。 |
| **處理優先順序程式碼 (UNB8)** | 請求交換處理優先順序的程式碼。 |
| **通訊協議 (UNB10)** | 定義控制交換的通訊協議型別。 |

#### 功能群組配置

*與 EDIFACT 文件功能群組頭相關的設定。這些可選識別碼可以幫助將相似的交換分組在一起，或促進組織內的子地址。*

| 設定 | 描述 |
| - | - |
| **應用交易夥伴方標識 (UNG2.1)** | 標識傳送文件的應用程式（例如部門、分支機構或計算機系統）。 |
| **應用個人標識 (UNG2.1)** | 標識文件預期的目標應用程式。 |

#### 進階設定

*前面類別中未包含的設定。*

| 設定 | 描述 |
| - | - |
| **批次處理** | 一個交換可以包含多個交易。未勾選時，端口會為交換中的每個交易建立單獨的輸出檔案。勾選後，端口會將所有交易分組到單個輸出檔案中。僅當 **轉換型別** 為 EDI 到 XML 時適用。 |
| **使用引用 Id** | 勾選後，將 EDIFACT 轉換為 XML 時，會使用引用 Id 命名 XML 元素。僅當 **轉換型別** 為 EDI 到 XML 時適用。例如：`<_143>value</_143>`。如果未勾選，則使用引用識別碼命名 XML 元素：`<BEG03>value</BEG03>`。 |
| **編碼** | 指定字元編碼（例如 ASCII 或 UTF-8）。 |
| **擴充套件限定符值** | 勾選後，包含 EDI 限定符的 XML 元素會包含子元素，其中包含限定符程式碼和值。例如： `<N101>`   `<Code>ST</Code>`   `<Value>Ship To</Value>` `</N101>` |
| **功能性 ACK** | 預設情況下，所有功能性確認（997、999）都會路由到流程圖中選擇的端口，且 XML 轉換不會顯示在 **交易** 索引標籤中。勾選此項後，轉換後的確認也會包含在 **交易** 索引標籤中。除了新的 EDI 文件之外，這還允許將功能性確認整合到目標源中。 |
| **將描述生成為** | 將 EDIFACT 轉換為 XML 時，可以提供 EDIFACT 段和元素的描述作為 EDIFACT 資料的上下文。使用此下拉式清單選擇是否將此上下文新增為 XML 註釋或 XML 屬性。 |
| **本地檔案方案** | 用於為端口輸出的訊息分配檔名的方案。可以在檔名中動態使用宏，以包含識別碼和時間戳等資訊。有關更多資訊，請參閱[宏](#宏)。 |
| **巢狀迴圈** | 勾選後，端口會檢測 EDI 資料中嵌入層次關係的 EDI 結構，並生成以父子關係表示這些層次關係的 XML。有關更多資訊，請參閱[主-明細層級：轉換 CPS 和 HYN 迴圈](#主-明細層級：轉換-cps-和-hyn-迴圈)。 |
| **處理延遲** | 放置在 **交易** 索引標籤中的檔案在處理前延遲的時間（以秒為單位）。這是舊版設定。最佳做法是[使用 File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/flows/designing-a-flow.md#與本地檔案系統互動)來管理本地檔案系統，而不是使用此設定。 |
| **嚴格架構驗證** | 當檢測到重複次數超過允許數量、缺少必需的元素或段、限定符和程式碼值無效、不允許的元素長度以及元素值無效時，端口應忽略、警告還是失敗。選擇 Disable 會關閉架構驗證檢查。 |
| **跟蹤 UNB2.1** | 是否將 UNB2.1 值作為跟蹤訊息頭新增到已處理的訊息。 |
| **跟蹤 UNB3.1** | 是否將 UNB3.1 值作為跟蹤訊息頭新增到已處理的訊息。 |
| **跟蹤交易型別** | 是否將交易型別作為跟蹤訊息頭新增到已處理的訊息。 |
| **驗證識別碼** | 勾選此項以確保轉換文件中的識別碼與端口配置中的識別碼匹配。 |
| **重複檔案操作** | 當端口收到控制編號此前已見過的訊息（重複訊息）時，端口應如何處理。設定為 `Ignore` 時，端口會靜默跳過重複訊息並繼續處理。設定為 `Warn` 時，端口會處理檔案但傳回警告。設定為 `Fail` 時，端口不接受該檔案並傳回錯誤。 |
| **上傳架構** | 用於上傳架構並將其安裝到端口的 Schema 資料夾。如果架構已存在，系統會詢問是否要覆蓋它。 |
| **重置狀態** | EDI 端口會跟蹤已使用的控制編號並遞增該數字，以確保未來執行不會重複資料。使用此按鈕可在不更改任何配置設定的情況下將計數器重置為初始狀態。 |

#### 訊息

*訊息設定確定端口如何搜尋訊息並在處理後管理它們。*

**注意：**以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇**顯示成功路徑**，然後將成功路徑連線到 [File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/file.md)。

<table><thead><tr><th>設定</th><th>描述</th></tr></thead>
<tbody><tr><td>**儲存到已傳送資料夾**（已棄用）</td>
<td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受[靜態加密](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/encryption-at-rest.md)保護。</td></tr>
<tr><td>**已傳送資料夾方案**（已棄用）</td>
<td>按所選時間間隔對 **Sent** 資料夾中的檔案進行分組。僅在啟用**儲存到已傳送資料夾**時適用。</td></tr></tbody></table>

#### 日誌

*用於管理日誌建立和儲存的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**日誌級別**</td>
<td>指定要記錄在端口日誌目錄中的資訊型別：
<ul><li>**None** - 不建立任何日誌。</li>
<li>**Error** - 僅當端口遇到錯誤時才建立日誌。</li>
<li>**Warning** - 僅當端口發出警告時才建立日誌。</li>
<li>**Info** - 記錄工作流程的一般資訊，包括任何錯誤和警告（如果適用）。</li>
<li>**Debug** - 記錄成功和失敗工作流程的詳細偵錯資訊。</li>
<li>**Trace** - 記錄成功和失敗工作流程的詳細跟蹤資訊。</li></ul>
\*\*請注意：\*\***Debug** 和 **Trace** 級別的日誌可能會記錄敏感資訊，包括訊息內容和 SSL 憑證。儘管連線屬性（例如密碼）被遮蔽了，但在與您的組織外部共享它們之前，請檢視此級別的日誌以避免洩漏敏感資訊。</td></tr>
<tr><td>**日誌資料夾結構**</td>
<td>指示端口根據選定的時間間隔將日誌資料夾中的檔案分組。例如，**Weekly** 選項指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。空白設定告訴端口將所有日誌直接儲存在日誌資料夾中。對於處理許多交易的端口，使用子資料夾有助於保持日誌的有序性並提高效能。</td></tr>
<tr><td>**保留訊息副本**</td>
<td>指示端口在日誌目錄中儲存最新訊息副本的切換。請注意，端口每個子資料夾只保留一個訊息，並且端口在再次執行時會覆蓋以前儲存的訊息。</td></tr></tbody></table>

#### 雜項

*特殊設定適用於特定用例。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**其他設定**</td>
<td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 `setting1=value1;setting2=value2`。正常的端口用例和功能不需要使用這些設定。</td></tr></tbody></table>

### EDI 交易夥伴索引標籤

預設情況下，端口 **設定** 頁面上的 **動態處理交易夥伴** 核取方塊是啟用的。這意味著端口會自動從 EDI 交易中識別並跟蹤交易夥伴關係。在這種情況下，不需要手動配置交易夥伴，因為端口會在許可限制範圍內動態管理所有交易夥伴，並在達到限制時發出通知。端口根據其處理的檔案跟蹤識別碼，這意味著可能可以使用單個端口來處理所有交易夥伴。

![Dynamically process partners setting](https://docs.kasoftware.com/26.4/images/edi_dynamically_process_partners.png)

僅當知行之橋正在動態處理交易夥伴時，**EDI 交易夥伴** 索引標籤才會被啟用。該索引標籤會填充端口識別出的每個關係的交易夥伴識別碼和個人識別碼，以及該交易夥伴最後一次處理檔案的日期。在 **EDI 交易夥伴** 索引標籤中，可以透過將滑鼠懸停在交易夥伴上並點選垃圾桶圖示，刪除最後處理日期超過 30 天的交易夥伴。

![EDI Partners tab](https://docs.kasoftware.com/26.4/images/edi_edifact_partners_tab.png)

啟用此設定後，端口識別出的所有交易夥伴關係都會自動跟蹤以用於許可計量。它們會出現在 **設定 > 許可** 頁面的 [端口使用情況](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/license-settings.md#connector-usage) 部分。在此處，您可以檢視交易夥伴識別碼和個人識別碼、關聯的端口以及日期資訊。

![EDI partner licenses](https://docs.kasoftware.com/26.4/images/edi_partner_licenses.png)

如果停用此設定，則必須在 **設定** 頁面的 **交易夥伴識別碼** 和 **個人識別碼** 欄位中顯式配置交易夥伴關係，如下圖所示。

![Dynamically process partners disabled](https://docs.kasoftware.com/26.4/images/edi_shared_partner_config_disabled.png)

手動定義的交易夥伴關係也會出現在 **設定 > 許可** 頁面的 [端口使用情況](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/license-settings.md#connector-usage) 部分。

### 自動化

#### 自動化設定

*與端口自動處理檔案相關的設定。*

| 設定 | 描述 |
| - | - |
| **傳送** | 指示端口在檔案準備就緒時自動傳送檔案的開關。 |
| **重新傳送間隔** | 收到負 ACK 的檔案重新傳送前端口等待的間隔。例如，如果交易夥伴收到檔案但其中有問題並傳回負 ACK，此設定指定再次傳送檔案前等待多長時間。 |
| **最大嘗試次數（非同步）** | 請求功能性 ACK 時端口處理輸入檔案的最大次數。是否成功取決於在 **重新傳送間隔** 內是否傳回功能性 ACK。如果未傳回成功的功能性 ACK，端口會重新傳送檔案，直到達到 **最大嘗試次數**。如果設定為 0，端口會無限期重新傳送檔案。 |

#### 效能

*與端口資源分配相關的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**最大工作執行緒數**</td>
<td>此端口上處理檔案時從執行緒池中消耗的最大工作執行緒數。如果設定，則會覆蓋 [進階設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/advanced-settings.md) 頁面的 [效能設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/performance-settings.md) 部分的預設設定。</td></tr>
<tr><td>**最大檔案數**</td>
<td>分配給端口的每個執行緒傳送的最大檔案數。如果設定，則會覆蓋 [進階設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/advanced-settings.md) 頁面的 [效能設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/performance-settings.md) 部分的預設設定。</td></tr></tbody></table>

### 警示

*與配置通知相關的設定。*

在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，知行之桥 使用 [通知](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/alerts.md) 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 **覆蓋全域設定**。

預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 **啟用** 核取方塊。

輸入 **主題**（必填）。勾選**允許在主題中使用 ArcScript**，即可在**主題**欄位中使用 ArcScript。選中後會顯示 **ArcScript 編輯器**按鈕（![ArcScript 編輯器按鈕](https://docs.kasoftware.com/26.4/images/rest_arcscript_editor.png)）。

（可選）輸入以逗號分隔的**收件人**電子郵件地址清單。

### SLA

*與配置服務級別協議 (SLA) 相關的設定。*

SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，知行之桥 會傳送電子郵件警告使用者，並將 SLA 標記為 *存在風險*，這意味著如果 SLA 未能儘快達到，則會被標記為 *已違反*。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。

SLA 轉換為 *存在風險* 或 *已違反* 狀態時，也會寫入[應用程式日誌](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/activity.md#应用程序日志)，這意味著應用程式效能監控 (APM) 和日誌擷取工具也可以針對這些狀態發出警示。

要定義 SLA，請啟用 **預期資料量**，然後點選 **設定** 索引標籤。

![SLA Empty](https://docs.kasoftware.com/26.4/images/sla_empty.png)
<ul><li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
<li>在視窗的 **預計至少** 部分中：
<ul><li>設定預計處理的最小交易數量（交易量）</li>
<li>使用 **每個** 欄位指定時間範圍</li>
<li>指示 SLA 生效的時間。如果選擇 **開始於**，請填寫日期和時間欄位。</li>
<li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 **每天**。</li></ul></li>
<li>在視窗的 **將狀態設定為“有風險”** 部分中，指定應將 SLA 標記為有風險的時間。
<ul><li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 **傳送“有風險”通知**。</li></ul></li></ul>

以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。

![SLA Configuration Example](https://docs.kasoftware.com/26.4/images/sla_defined.png)

> [!NOTE]
>
> 如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 **設定**，然後跳轉到 **通知 > 通用通知**。點選平板和鉛筆圖示進行編輯，並取消勾選 **SLA 通知** 設定。

## 轉換型別

以下部分詳細介紹 EDIFACT 到 XML 以及 XML 到 EDIFACT 的轉換過程。

### EDIFACT 轉換為 XML

將 **轉換型別** 設定為 *EDI to XML* 會指示端口將傳入的 EDIFACT 文件解析為 XML。端口首先讀取文件中交換和功能群組部分的所有頭資訊，並根據配置的端口設定進行驗證（除非勾選 **Test Indicator**）。然後，端口解析文件中使用的具體 EDIFACT 架構，並從磁碟上的 `edifact_schemas` 資料夾載入架構（可以從聯絡我們免費下載額外的架構檔案）。端口使用該架構生成表示文件 EDIFACT 結構的 XML，用文件中的值填充 XML，並根據 **Generate Descriptions As** 的值，以 XML 註釋或 XML 元素屬性的形式為每個值提供上下文。

若要使用一組測試 EDIFACT 文件檢視此過程，請導航到 EDIFACT 端口的 **交易** 索引標籤（**轉換型別** 設定為 *EDI to XML*），然後選擇 **More > Create Test Files**。系統會自動生成發票、採購訂單、採購訂單確認和發貨通知的 EDIFACT 文件，並將其放入 **交易** 目錄。端口處理這些測試檔案後，導航到 **交易** 索引標籤即可檢視生成的 XML。

EDIFACT 文件轉換為 XML 後，可以透過多種方式轉換和處理這些資料。通常，EDIFACT 資料需要儲存在資料庫或其他後端應用系統中。由於 知行之橋 使用 XML 表示對這些後端系統的 `inserts`，因此儲存 EDIFACT 資料就變成了將一個 XML 結構對映到另一個 XML 結構。這通常透過視覺化設計器驅動的 [XML Map 端口](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/connectors/xml-map/xml-map.md)完成。

### XML 轉換為 EDIFACT

將 **轉換型別** 設定為 *XML to EDI* 會指示端口從文件的 XML 表示生成 EDIFACT 文件。端口從 XML 解析出的資料構造 EDIFACT 訊息後，會根據配置的端口設定新增功能群組和交換頭。

若要使用一組測試 XML 檔案檢視此過程，請導航到 EDIFACT 端口的 **交易** 索引標籤（**轉換型別** 設定為 *XML to EDI*），然後選擇 **More > Create Test Files**。系統會自動生成表示發票、採購訂單、採購訂單確認和發貨通知的 XML 檔案，並將其放入 **交易** 目錄。端口處理這些測試檔案後，導航到 **交易** 索引標籤即可檢視生成的 EDIFACT 文件。

### 列印檢視

在端口的 **交易** 索引標籤上檢視 EDIFACT 文件時，可以以列印預覽格式或原始資料格式進行檢視。預設情況下，文件以預覽格式顯示，如下圖所示：

![EDIFACT print preview](https://docs.kasoftware.com/26.4/images/edifact_print_preview.png)

預覽格式以易於閱讀的佈局顯示資料。使用右上角的 **原始檢視**（Raw View）開關可以檢視未格式化的文件。

## 與 XML Map 端口結合使用

EDIFACT 端口執行兩項操作之一：接收 XML 輸入或生成 XML 輸出。為確保輸入和輸出檔案具有正確的 XML 結構，我們強烈建議在生成出站 EDIFACT 文件時將 [XML Map 端口](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/xml-map/xml-map.md) 用作流程中的上一步，或在接收入站 EDIFACT 文件時將其用作流程中的下一步。下面描述的 **上傳測試檔案** 功能使 XML Map 端口和 EDIFACT 端口之間的互動變得簡單。

### 上傳測試檔案

按照以下步驟生成輸入檔案的 XML 範本：

1. 在端口的 **交易** 索引標籤中，單擊 **更多** 下拉功能表，然後單擊 **上傳測試檔案**。

2. 導航到磁碟上要建模為 XML 的檔案，選擇它，然後單擊 **OK**。

3. 將 EDIFACT 端口連線到流中的 XML Map 端口。此連線可以在任一方向進行——入站到 XML Map 端口，或從 XML Map 端口出站。

XML Map 端口會自動檢測測試檔案的結構。根據您放置 EDIFACT 端口的位置，該檔案將出現在 XML Map 端口的 **來源檔案** 或 **目的檔案** 下拉功能表中。

> [!NOTE]
>
> XML Map 端口需要源範本和目標範本，因此必須根據資料來源結構或應轉換為的結構來設定剩餘範本。例如，如果需要將 EDIFACT 文件中的資料插入資料庫，則 XML Map 端口中的另一個範本將是資料庫插入的 XML 模型。有關在兩個範本檔案之間建立對映的更多資訊，請參閱 XML Map 端口的 [使用對映編輯器](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/xml-map/xml-map-designer.md)。

## EDIFACT ACK

以下部分詳細介紹兩種 EDIFACT 確認（ACK），以及 知行之橋 如何期待、處理和生成 ACK。

### 技術性 ACK 與功能性 ACK

技術性 ACK 有時稱為交換 ACK，表示雙方之間發生了交換，但不一定表示已交換任何單個訊息。它們作為傳送方的回執，指示 EDIFACT 訊息已成功接收，但不說明處理訊息內容時是否存在任何問題。

功能性 ACK 表示接收方已處理交換。它們可以報告已接受、帶問題接受或拒絕接收的文件。它們既作為交換已成功接收的回執，也表示該交換已被完整處理。

### 期待 ACK、處理 ACK 和生成 ACK

#### 期待 ACK

在 XML 到 EDI 模式下執行的 EDIFACT 端口可以配置為期望訊息傳回技術性 ACK 和/或功能性 ACK。當在設定索引標籤的 [ACK](#ack) 部分勾選 **Technical acknowledgment (CONTRL)** 和 **Functional acknowledgment (CONTRL)** 中的一個或兩個時，端口會在適當的 ACK 傳回並處理之前，將傳輸保持為 Pending ACK 狀態。這意味著可以使用端口狀態來確定接收方是否已確認收到交換。

當需要確認的 EDI 訊息未收到確認時，會在訊息中新增一個 Pending-Timeout 標頭。在等待 ACK 期間，訊息處於 *Pending* 狀態。如果在規定時間內未收到 ACK，則會將訊息狀態更改為 *Error* 的日期和時間填充到 Pending-Timeout 標頭中。當收到 ACK 並將訊息更新為 *Success* 時，會新增一個包含空字串值的新標頭。

下圖顯示了 知行之橋 期望發票文件傳回 ACK 時涉及的邏輯流程：

!\[EDIFACT 接收 ACK(/26.4/images/edifact-ack-receive.png)

在上圖中，XML 到 EDI 模式下的 EDIFACT 端口生成要交換的文件 **(1)**，並在文件傳輸給交易夥伴期間將其保持為 Pending ACK 狀態。交易夥伴根據其業務邏輯處理傳輸，並按照配置的交換參數建立確認 **(2)**。確認傳回後，會根據下一節中的資訊進行處理 **(3)**。

#### 處理 ACK

在典型流程中，EDIFACT ACK 會到達以 EDI 到 XML 模式執行的 EDIFACT 端口。可以將此 EDIFACT 端口配置為自動將收到的任何確認路由到最初生成被確認文件的 EDIFACT 端口。透過在 Flows 畫布上將 EDI 到 XML 模式下 EDIFACT 端口底部的灰點拖到 XML 到 EDI 模式下的 EDIFACT 端口，即可直觀配置 EDIFACT 端口之間的 ACK 路由。

XML 到 EDI 模式下的 EDIFACT 端口收到路由的 ACK 後，會將 ACK 與原始訊息配對，並將其狀態從 Pending ACK 更改為 Sent。

#### 生成 ACK

當 EDI 到 XML 模式下的 EDIFACT 端口收到訊息並生成相應的 XML 時，可以自動為收到的訊息生成 CONTRL 確認。為此，請在設定索引標籤的 [ACK](#ack) 部分勾選 **Technical acknowledgment (CONTRL)** 和/或 **Functional acknowledgment (CONTRL)**。這些確認必須路由到另一個 EDIFACT 端口（XML 到 EDI 模式）以完成 ACK。ACK 被路由到的端口會應用交換頭，並像任何其他 EDIFACT 訊息一樣將 ACK 傳遞到流程中的下一個端口。若要正確路由 ACK，請將 EDI 到 XML 模式下 EDIFACT 端口底部的灰點拖到 XML 到 EDI 模式下的 EDIFACT 端口。

下圖顯示了為收到的發票文件建立 ACK 時涉及的邏輯流程：

!\[EDIFACT 建立 ACK(/26.4/images/edifact-ack-create.png)

如上圖所示，在交易夥伴傳送需要確認的訊息後 **(1)**，解析該文件的 EDI 到 XML 模式 EDIFACT 端口會自動生成 ACK **(2)**。此 ACK 是一個 XML 檔案，包含與該交易相關的交易資訊。然後，此 XML 確認會路由回 XML 到 EDI 模式的 EDIFACT 端口 **(3)**，以便在將 ACK 傳送回交易夥伴之前應用交換頭（以及任何其他 EDI 方協議設定）。

## 主-明細層級：轉換 CPS 和 HYN 迴圈

在 EDI 文件中，大多數層次關係由 EDI 段的順序表示。某些 EDI 結構（如 DESADV 文件中的 CPS 迴圈和 PRICAT 文件中的 HYN 迴圈）不遵循此約定，而是將層次關係嵌入 EDI 元素資料本身。這會使將 EDI 資料轉換為 XML 時保留這些層次關係變得困難。

EDIFACT 端口透過[進階頁面](#進階頁面)上的 **巢狀迴圈** 設定，支援在 CPS 和 HYN 段中保留層次關係。啟用後，端口會解析 CPS 和 HYN 段中的元素，以確定哪些段在層次關係中“屬於”其他段。這些層次關係會在輸出 XML 中體現為父子關係；換句話說，此設定會將 EDI 內容隱含的層次結構轉換為 XML 結構表示的層次結構。

本節說明 CPS 和 HYN 資料中如何編碼層次結構，以及勾選 **巢狀迴圈** 時如何將此層次結構轉換為 XML。

### CPS 和 HYN 層級

所有 CPS 和 HYN 段都有兩個有助於建立層次結構的值：

* Id 值，用於標識當前段（此值儲存在 CPS01 或 HYN01，即 CPS 或 HYN 段中的第一個元素）
* 父 Id 值，用於標識當前段的層次父級（此值儲存在 CPS02 或 HYN02，即 CPS 或 HYN 段中的第二個元素）

例如，假設某個段的 Id 值為 “2”。如果下一個段在層次關係中應“屬於”此前的段，則下一個段的父 Id 也應為 “2”。

如果段的父 Id 為 “0”，則該段沒有父級（位於層次結構頂層）。

### 將 CPS 和 HYN 層級轉換為 XML

勾選 **巢狀迴圈** 時，EDIFACT 端口會自動處理 CPS 和 HYN 層次結構到 XML 層次結構的轉換。端口解析 CPS 和 HYN 段中的 Id 和父 Id 值，並確保生成的 XML 元素適當地巢狀在表示其父元素的元素中。

換句話說，如果 `segmentA` 的父 Id 值等於 `segmentB`，則生成的 XML 會將 `segmentA` 作為 `segmentB` 的子級。這樣，在轉換 EDI 資料時，層次關係會保留在 XML 結構中。

## 宏

在檔案命名策略中使用宏可以提高組織效率和對資料的上下文理解。透過將宏合併到檔名中，可以動態地包含相關資訊，例如識別碼、時間戳和訊息頭資訊，從而為每個檔案提供有價值的上下文。這有助於確保檔名反映對組織重要的詳細資訊。

知行之桥 支援這些宏，它們都使用以下語法：`%Macro%`。

<table><thead><tr><th>宏</th><th>描述</th></tr></thead>
<tbody><tr><td>ConnectorID</td><td>替換為端口的 ConnectorID。</td></tr>
<tr><td>ConnectorName</td><td>替換為端口名稱。可用於在檔名或路徑中包含連線名稱，例如按生成備份檔案的資料庫連線標記檔案。</td></tr>
<tr><td>Ext</td><td>替換為端口當前正在處理的檔案的副檔名。</td></tr>
<tr><td>Filename</td><td>替換為端口當前正在處理的檔案的檔名（包括副檔名）。</td></tr>
<tr><td>FilenameNoExt</td><td>替換為端口當前正在處理的檔案的檔名（不帶副檔名）。</td></tr>
<tr><td>MessageId</td><td>計算端口輸出的訊息的 MessageId。</td></tr>
<tr><td>RegexFilename:*pattern*</td><td>將規則運算式模式應用於端口當前正在處理的檔案的檔名。</td></tr>
<tr><td>Header:*headername*</td><td>替換為端口正在處理的當前訊息的目標訊息頭（`headername`）的值。</td></tr>
<tr><td>LongDate</td><td>以常規格式計算系統的當前日期時間（例如，2024 年 1 月 24 日星期三）。</td></tr>
<tr><td>ShortDate</td><td>以 yyyy-MM-dd 格式計算系統的當前日期時間（例如 2024-01-24）。</td></tr>
<tr><td>DateFormat:*format*</td><td>以指定格式（`format`）計算系統的當前日期時間。有關可用的日期時間格式，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#date-formats-with-literal-characters)。</td></tr>
<tr><td>Vault:*vaultitem*</td><td>計算指定保管庫專案的值。</td></tr></tbody></table>

### 範例

某些宏（例如 %Ext% 和 %ShortDate%）不需要參數，但其他宏則需要。所有帶有參數的宏都使用以下語法：`%Macro:argument%`

以下是帶有參數的宏的一些範例：

<ul><li>%Header:headername%：其中 `headername` 是訊息上訊息頭的名稱。</li>
<li>%Header:mycustomheader% 解析為輸入訊息上設定的 `mycustomheader` 訊息頭的值。</li>
<li>%Header:ponum% 解析為輸入訊息上設定的 `ponum` 訊息頭的值。</li>
<li>%RegexFilename:pattern%：其中 `pattern` 是規則運算式模式。例如，`%RegexFilename:^([\w][A-Za-z]+)%` 匹配並解析為檔名中的第一個單詞，並且不區分大小寫（`test_file.xml` 解析為 `test`）。</li>
<li>%Vault:vaultitem%：其中 `vaultitem` 是 [vault](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/global-settings-vault.md) 中專案的名稱。例如，`%Vault:companyname%` 解析為儲存在保管庫中的 `companyname` 項的值。</li>
<li>%DateFormat:format%：其中 `format` 是可接受的日期格式（有關詳細資訊，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#sample-date-formats)）。例如，`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%` 解析為檔案上的日期和時間戳。</li></ul>

還可以建立更復雜的宏，如以下範例所示：

<ul><li>將多個宏組合在一個檔名中：`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%`</li>
<li>包括宏之外的文字：`MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%`</li>
<li>在宏中包含文字：`%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%`</li></ul>

## EDIFACT 操作

除了 知行之橋 提供的[操作](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/scripting/operations/operations.md)之外，端口還可以提供將功能擴充套件到 ArcScript 的操作。這些端口操作可以像任何其他 ArcScript 操作一樣呼叫，但必須透過 `connector.rsc` 端點呼叫幷包含身分驗證權杖。

以下操作特定於 EDIFACT 端口的功能。

### edifactScan

從 EDIFACT 文件的頭中掃描頭值。

#### 必需參數

* **file**：EDIFACT 檔案的路徑。

#### 可選參數

* **format**：檔案格式。預設值為 EDIFACT。

#### 輸出屬性

* **InterchangeSyntaxIdentifier**：所使用語法版本的 Id（UNB1.1）。
* **InterchangeSyntaxVersion**：所使用語法規則的版本。值範圍為 1 到 5，數字越大支援越高階的字元集（UNB1.2）。
* **InterchangeSenderIdQualifier**：傳送方 Id 的交換限定符（UNB2.2）。
* **InterchangeSenderId**：交換傳送方 Id（UNB2.1）。
* **InterchangeReceiverIdQualifier**：接收方 Id 的交換限定符（UNB3.2）。
* **InterchangeReceiverId**：交換接收方 Id（UNB3.1）。
* **DocumentType**：文件型別或交易集識別碼程式碼（UNH2.1）。

## 常見錯誤

以下是常見錯誤、原因以及建議的解決方案清單。

### 錯誤：Schema file not found (\[schema major version] \[schema document type])

**原因**

知行之橋 解析 EDIFACT 檔案時，首先會掃描檔案以取得 EDI 版本和文件型別，從而確定解析時使用的架構。應用程式包含大量 JSON 格式的 EDIFACT 架構。它們儲存在應用程式目錄中的 `schemas` 資料夾（位於 `data` 資料夾旁）。

此錯誤表示應用程式找不到與檔案報告的主版本和文件型別匹配的架構檔案。

如果錯誤訊息中缺少 \[schema major version] 或 \[schema document type] 值，則 EDI 文件不包含主版本或文件型別。

否則，此錯誤表示合適的文件架構未包含在 知行之橋 自動包含的架構定義集中。

**解決方案**

如果 EDI 檔案不包含架構主版本或文件型別，請聯絡交易夥伴（或 EDI 文件的其他來源），並告知他們必須在訊息頭中包含這些值。

否則，請從我們的免費下載頁面找到合適的架構版本。下載架構資料夾並將其放在以下路徑：

`[application_directory]\schemas\edifact_schemas\[major_version]\`

### 錯誤：The segment at line \[line number] with tag \[segment name] is not in a valid position in the specified schema (\[schema major version] \[schema document type]). This may indicate that the input file contains segments that are out of order.

**原因**

知行之橋 解析 EDIFACT 檔案時，首先會掃描檔案以取得 EDI 版本和文件型別，從而確定解析時使用的架構。應用程式包含大量 JSON 格式的 EDIFACT 架構，儲存在根安裝目錄的 `www\app_data` 資料夾中。

此錯誤表示剖析器在檔案中遇到了一個 EDI 段，該段與相關文件架構中定義的段順序不匹配。這可能表示以下幾種問題：

* 交易夥伴生成的 EDI 檔案不正確
* EDI 檔案使用的架構版本與檔案中指示的版本不同
* EDI 檔案使用自定義架構生成

**解決方案**

如果 EDI 檔案使用自定義架構生成，請將自定義架構檔案（JSON 格式）放入 知行之橋 讀取 EDI 架構的資料夾中。端口會按以下順序檢查位置來搜尋架構：

1. 位於磁碟上的端口資料夾內（例如，`<ConnectorDirectory>/Resources/Schemas/`）
2. 如果一個架構由多個端口使用，知行軟體建議使用如下資料夾結構：`<ApplicationDirectory>/schemas/<type>_schemas/<major version>`。在此範例中，`<type>` 應為 `edifact`。

如果 EDI 檔案不是使用自定義架構生成，則有兩種方法可解決合作伙伴生成的 EDI 檔案與用於解析它的 EDI 架構之間的差異。

1. 手動編輯相應的 EDI 架構檔案（位於上述檔案路徑）以調整段順序，使其與合作伙伴的 EDI 檔案匹配。錯誤訊息會指示檔案中段與架構定義發生分歧的行。沿著 JSON 中的段順序定義追蹤，直到找到分歧點，然後重新排列 JSON 中的段，使其與合作伙伴提供的檔案匹配。
2. 聯絡交易夥伴瞭解 EDI 檔案。確認該檔案是根據檔案報告的主版本生成的，並說明檔案中段的順序無法識別。

使用哪種方法取決於你對特定文件型別 EDI 段的熟悉程度（以便根據合作伙伴的檔案正確編輯 JSON 架構）以及合作伙伴的靈活性（是否會根據你告知的錯誤調整 EDI 檔案）。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.