> ## 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.

# EANCOM 端口

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

EANCOM 端口支援從 XML 生成 EANCOM 檔案（也稱為 GS1 檔案），也支援將 EANCOM 檔案轉換為 XML。

## 核心功能

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

## 概覽

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

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

## 端口配置

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

### 設定

#### 轉換配置

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

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

#### EDI 交易夥伴

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

#### 交換頭配置

*與 EANCOM 交換頭相關的設定。將 EANCOM 檔案轉換為 XML 時，會根據這些設定驗證檔案頭；從 XML 生成 EANCOM 檔案時，這些設定用於生成檔案頭。*

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

#### 請求確認

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

| 設定 | 描述 |
| - | - |
| **請求技術性 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 分隔符號

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

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

#### 交換頭配置

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

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

#### 功能群組配置

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

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

#### 進階設定

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

| 設定 | 描述 |
| - | - |
| **批次處理** | 一個交換可以包含多個交易。未勾選時，端口會為交換中的每個交易建立單獨的輸出檔案。勾選後，端口會將所有交易分組到單個輸出檔案中。 |
| **編碼** | 指定字元編碼（例如 ASCII 或 UTF-8）。 |
| **擴充套件限定符值** | 勾選後，包含 EDI 限定符的 XML 元素會包含子元素，其中包含限定符程式碼和值。例如：`<N101><Code>ST</Code><Value>Ship To</Value></N101>`。 |
| **功能性 ACK** | 預設情況下，所有功能性確認（997、999）都會路由到流程圖中選擇的端口，且 XML 轉換不會顯示在 **交易** 索引標籤中。勾選此項後，轉換後的確認也會包含在 **交易** 索引標籤中。除了新的 EDI 文件之外，這還允許將功能性確認整合到目標源中。 |
| **將描述生成為** | 將 EANCOM 轉換為 XML 時，可以提供 EANCOM 段和元素的描述作為 EANCOM 資料的上下文。使用此下拉式清單選擇是否將此上下文新增為 XML 註釋或 XML 屬性。 |
| **本地檔案方案** | 用於為端口輸出的訊息分配檔名的方案。可以在檔名中動態使用宏，以包含識別碼和時間戳等資訊。有關更多資訊，請參閱[宏](#宏)。 |
| **巢狀迴圈** | 勾選後，端口會檢測 EDI 資料中嵌入層次關係的 EDI 結構，並生成以父子關係表示這些層次關係的 XML。有關更多資訊，請參閱[主從層次結構：轉換 CPS 迴圈](#主從層次結構：轉換-cps-迴圈)。 |
| **處理延遲** | 放置在 **交易** 索引標籤中的檔案在處理前延遲的時間（以秒為單位）。這是舊版設定。最佳做法是[使用 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_eancom_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 通知** 設定。

## XML 轉換為 EANCOM

生成 EANCOM 檔案時，將 **轉換型別** 選擇為 **XML 轉換為 EANCOM**。應用程式會從[設定](#設定)索引標籤中配置的設定讀取交換、功能群組和訊息部分的頭資訊。這些設定包括傳送方識別碼和程式碼限定符、接收方識別碼和程式碼限定符等。

使用交易夥伴協議中的設定配置端口後，點選 **交易** 索引標籤並選擇 **More > Create Test Files**。應用程式會建立一組測試 XML 檔案，提供範例資料，展示端口生成 EANCOM 文件時 XML 應採用的格式。也可以選擇這些文件並點選 **Send** 檢視生成的 EANCOM 文件。

## EANCOM 轉換為 XML

生成 XML 時，將 **轉換型別** 選擇為 **EANCOM 轉換為 XML**。選擇此選項後，應用程式僅處理 EANCOM 檔案。你需要在此頁面上配置交易夥伴協議的設定，以便應用程式在處理期間驗證 EANCOM 文件中的資訊。XML 檔案會生成到此端口的 Output 資料夾中。

點選 **交易** 索引標籤並選擇 **More > Create Test Files**，為多個 EANCOM 文件建立測試 EANCOM 檔案。可以選擇這些文件並點選 **Send** 檢視生成的 XML。

## 與 XML Map 端口結合使用

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

### 上傳測試檔案

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

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

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

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

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

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

## 請求確認

確認會路由到流程圖中灰色虛線指定的端口，如下圖所示：

![](https://mintcdn.com/qiao/92y00drsn6lqgU2C/26.4/images/edi_ack_flow.png?fit=max\&auto=format\&n=92y00drsn6lqgU2C\&q=85\&s=0c33bf16365d7340e7fe426ade8f32e6)

指定的端口使用當前端口接收到的交易資料生成確認。指定的端口新增交換頭，並像任何其他訊息一樣在流程中傳遞確認。因此，通常應將其設定為預先配置的 EANCOM 端口，該端口會為目標收件人生成出站文件。

確認可以由應用程式自動生成和處理。EANCOM 通訊中常用兩種確認型別：交換確認和功能性確認。這兩類確認都歸類為 EANCOM CONTRL 訊息。

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

#### 交換請求確認

這表示雙方之間已經發生了交換（但不一定表示已交換任何單獨的訊息）。它們會回應交換中的請求自動生成。

#### 功能性請求確認

功能性確認表示已接受單個訊息（如發票或採購訂單）。它們回應雙方的雙向協議生成。

### 訊息發起者

#### 要求回執

可以配置 XML 到 EDI 模式下的 EANCOM 端口，使其為訊息請求交換確認和功能性確認。在[設定](#設定)索引標籤上選擇 **Technical acknowledgment (CONTRL)** 和 **Functional acknowledgment (CONTRL)** 核取方塊，指示端口在適當的確認傳回並處理之前，保持傳輸的 Pending ACK 狀態。

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

上圖從訊息發起者的角度顯示了完整的訊息交換。XML 到 EDI 模式下的 EANCOM 端口生成要交換的文件 **(1)**，並將其保持為 Pending ACK 狀態。交易夥伴在其業務邏輯中處理傳輸，並根據配置的交換參數和雙方的雙向協議建立確認 **(2)**。確認傳回後，會由 EDI 到 XML 模式下的 EANCOM 端口解析，並路由到原始 EANCOM 端口（XML 到 EDI）以更新傳輸狀態 **(3)**。

#### 處理回執

當 EANCOM 端口在 EDI 到 XML 模式下收到交換和功能性 EANCOM 確認時，可以將該端口配置為自動將檢測到的任何確認路由到最初生成傳輸的 EANCOM 端口。在流程圖中，將接收端（EDI 到 XML）EANCOM 端口上的灰色圓圈拖到發起端（XML 到 EDI）EANCOM 端口上。

配置好的（XML 到 EDI）EANCOM 端口會將確認與原始訊息配對，並解析匹配的訊息。

### 訊息回執

#### 生成回執

當 EDI 到 XML 模式下的 EANCOM 端口處理從發起者收到的訊息並生成 XML 時，可以透過在設定索引標籤中選擇 **Acknowledgment** 核取方塊，指示端口自動生成 CONTRL 確認。將這些確認路由到 XML 到 EDI 模式下的 EANCOM 端口，以生成 EANCOM 確認。在流程圖中，將灰色圓圈拖到為此夥伴生成 EANCOM 文件的（XML 到 EDI）EANCOM 端口上。

!\[生成 ACK(/26.4/images/edifact-ack-create.png)

如上圖所示，當合作伙伴傳送需要確認的訊息 **(1)** 時，為該夥伴配置的（EDI 到 XML）EANCOM 端口會自動生成確認 **(2)**，該確認是包含該檔案相關交易資訊的 XML 檔案。此 XML 確認必須路由回（XML 到 EDI）EANCOM 端口 **(3)**，以便在生成傳送回交易夥伴的 EANCOM 檔案時使用所有 EDI 方協議設定。

## 主從層次結構：轉換 CPS 迴圈

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

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

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

### CPS 層次結構

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

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

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

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

### 將 CPS 層次結構轉換為 XML

啟用 **巢狀迴圈** 時，EANCOM 端口會自動處理 CPS 層次結構到 XML 層次結構的轉換。端口解析 CPS 段中的 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>


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