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

# Branch 端口

> 根據可配置條件將訊息路由到不同流程路徑，支援檔名、訊息頭、XPath 和 EDI 中繼資料比較。

export const NameDescription = ({extraRows}) => <table>
    <thead>
      <tr>
        <th>設定</th>
        <th>描述</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><strong>端口 Id</strong></td>
        <td>端口的靜態、唯一識別碼。</td>
      </tr>
      <tr>
        <td><strong>端口型別</strong></td>
        <td>顯示端口型別及其用途的描述。</td>
      </tr>
      <tr>
        <td><strong>端口描述</strong></td>
        <td>一個可選欄位，用於提供端口及其在流中的角色的自由格式描述。</td>
      </tr>
      {extraRows}
    </tbody>
  </table>;

export const SlasTab = ({siteName = "知行之桥"}) => <>
    <p><em>與配置服務級別協議 (SLA) 相關的設定。</em></p>
    <p>
      SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，{siteName} 會傳送電子郵件警告使用者，並將 SLA 標記為 <em>存在風險</em>，這意味著如果 SLA 未能儘快達到，則會被標記為 <em>已違反</em>。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。
    </p>
    <p>
      要定義 SLA，請啟用 <strong>預期資料量</strong>，然後點選 <strong>設定</strong> 索引標籤。
    </p>
    <img src="/public/images/sla_empty.png" alt="SLA Empty" />
    <ul>
      <li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
      <li>在視窗的 <strong>預計至少</strong> 部分中：
        <ul>
          <li>設定預計處理的最小交易數量（交易量）</li>
          <li>使用 <strong>每個</strong> 欄位指定時間範圍</li>
          <li>指示 SLA 生效的時間。如果選擇 <strong>開始於</strong>，請填寫日期和時間欄位。</li>
          <li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 <strong>每天</strong>。</li>
        </ul>
      </li>
      <li>在視窗的 <strong>將狀態設定為“有風險”</strong> 部分中，指定應將 SLA 標記為有風險的時間。
        <ul>
          <li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 <strong>傳送“有風險”通知</strong>。</li>
        </ul>
      </li>
    </ul>
    <p>
      以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。
    </p>
    <img src="/public/images/sla_defined.png" alt="SLA Configuration Example" />
    <Note>
      如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 <strong>設定</strong>，然後跳轉到 <strong>通知 &gt; 通用通知</strong>。點選平板和鉛筆圖示進行編輯，並取消勾選 <strong>SLA 通知</strong> 設定。
    </Note>
  </>;

export const AlertsTab = ({siteNameShort = "知行之桥"}) => <>
    <p><em>與配置通知相關的設定。</em></p>
    <p>
      在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，{siteNameShort} 使用 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/alerts">通知</a> 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 <strong>覆蓋全域設定</strong>。
    </p>
    <p>
      預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 <strong>啟用</strong> 核取方塊。
    </p>
    <p>
      輸入 <strong>主題</strong>（必填）。勾選<strong>允許在主題中使用 ArcScript</strong>，即可在<strong>主題</strong>欄位中使用 ArcScript。選中後會顯示 <strong>ArcScript 編輯器</strong>按鈕（<img src="/public/images/rest_arcscript_editor.png" alt="ArcScript 編輯器按鈕" style={{
  display: 'inline',
  verticalAlign: 'middle',
  margin: 0
}} />）。
    </p>
    <p>
      （可選）輸入以逗號分隔的<strong>收件人</strong>電子郵件地址清單。
    </p>
  </>;

export const Message = () => <>
    <p><em>訊息設定確定端口如何搜尋訊息並在處理後管理它們。</em></p>
    <p><strong>注意：</strong>以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇<strong>顯示成功路徑</strong>，然後將成功路徑連線到 <a href="/26.3/self-hosted/zh/connectors/file">File 端口</a>。</p>
    <table>
      <thead>
        <tr><th>設定</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>儲存到已傳送資料夾</strong>（已棄用）</td>
          <td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受<a href="/26.3/self-hosted/zh/getting-started/administration/settings/encryption-at-rest">靜態加密</a>保護。</td>
        </tr>
        <tr>
          <td><strong>已傳送資料夾方案</strong>（已棄用）</td>
          <td>按所選時間間隔對 <strong>Sent</strong> 資料夾中的檔案進行分組。僅在啟用<strong>儲存到已傳送資料夾</strong>時適用。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const MiscConnector = () => <>
    <p><em>特殊設定適用於特定用例。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>其他設定</strong></td>
          <td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 <code>setting1=value1;setting2=value2</code>。正常的端口用例和功能不需要使用這些設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

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

export const Performance = () => <>
    <p><em>與端口資源分配相關的設定。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>最大工作執行緒數</strong></td>
          <td>此端口上處理檔案時從執行緒池中消耗的最大工作執行緒數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
        <tr>
          <td><strong>最大檔案數</strong></td>
          <td>分配給端口的每個執行緒傳送的最大檔案數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const siteNameShort = "知行之橋";

export const siteName = "知行之橋";

Branch 端口在工作流程中起著分叉作用。檔案會根據端口中指定的條件是否為真，沿流程中的不同路徑傳送。

## 核心功能

* **基於可配置條件的智慧流程路由**：支援根據檔名、訊息頭、XPath 和 EDI 中繼資料進行跳轉。
* **支援多種資料型別**：支援字串 (String)、數字 (Number)、日期時間 (DateTime) 等型別，並配有靈活的比較運算子。
* **高階 XPath 評估**：支援針對 XML 文件路由的複雜 XPath 解析。
* **EDI 特定中繼資料分支**：可根據文件型別進行 EDI 中繼資料分支。

## 概覽

分支條件可以檢查以下不同型別的值：

* 檔名
* 訊息上的訊息頭
* 所有匹配的 XPath
* 第一個匹配的 XPath
* 一個或多個匹配的 XPath
* [EDI](./edi-connectors) 中繼資料

**注意**：

* 要使用 XPath 選項，正在評估的檔案必須是 XML 檔案。
* EDI 中繼資料分支只能用於 EDI 文件。

Branch 端口配置確定要查詢的值以及要比較的\_目標\_值。如果傳入值與目標值匹配，則訊息會沿藍色虛線流程路徑傳遞。可以有多個目標值，每個目標值會將訊息沿不同流程路徑傳送。如果這些值與任何條件都不匹配，則訊息會沿灰色虛線路徑傳遞。

<img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/branch_flow.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=e6b1d6f0ff0399ee147b8e72846537ea" width="800" data-path="public/images/branch_flow.png" />

有關上圖的詳細說明，請參閱[根據訊息頭進行分支](#根據訊息頭進行分支)。

## 端口配置

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

### Branch 配置索引標籤

*與配置分支條件相關的設定。*

分支設定允許為單個源值指定多個條件來定義分支。

<table>
  <thead>
    <tr>
      <th>設定</th>
      <th>描述</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><strong>範例檔案</strong></td>
      <td>如果上傳範例 XML 檔案，端口會在使用 XPath 進行比較時顯示文件結構。範例如下。</td>
    </tr>

    <tr>
      <td><strong>如果</strong></td>
      <td>使用下拉式清單指定接收訊息時要比較的屬性。選項包括：訊息頭、檔名、所有匹配的 XPath、第一個匹配的 XPath、一個或多個匹配的 XPath，或 EDI 中繼資料。做出選擇後，請使用右側欄位進一步定義條件，如上方<strong>範例檔案</strong>圖所示。</td>
    </tr>

    <tr>
      <td><strong>資料型別</strong></td>
      <td>目標值是字串、數字還是 DateTime。如果資料型別是 <strong>String</strong>，請使用 <strong>Trim string</strong> 和 <strong>Ignore case</strong> 核取方塊進一步細化比較。如果資料型別是 <strong>DateTime</strong>，請使用右側欄位指定 DateTime 值的結構。</td>
    </tr>

    <tr>
      <td><strong>修剪字串</strong></td>
      <td>字串比較是否應忽略空格。</td>
    </tr>

    <tr>
      <td><strong>忽略大小寫</strong></td>

      <td>
        <p>字串比較是否應區分大小寫。</p>

        <img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/branch_sample_file.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=603c850765ec8ae762399740d3cea7da" width="400" data-path="public/images/branch_sample_file.png" />

        <p>分支設定部分的中心區域（如下圖所示）允許根據需要設定任意數量的條件。將滑鼠懸停在白色窗格上方或下方，然後選擇 <strong>Add Case</strong> 以新增條件。</p>

        <img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/branch_conditions.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=70088c4ef6684d605b7e618a2010bbd6" width="500" data-path="public/images/branch_conditions.png" />

        <p>每個條件由三個部分組成：</p>

        <ul>
          <li>運算子（例如 <em>is equal to、contains、starts with</em> 或 <em>matches regex</em>）</li>
          <li>與檔案中找到的值進行比較的值</li>
          <li><em>Then output to</em> 元件</li>
        </ul>

        <p>建立流程時，將不同端口連線到 Branch 端口中的每個 case 語句，以建立 <em>Then output to</em> 端口。最後，將不同端口連線到 <strong>Else</strong> 條件，以告訴 {siteNameShort} 在其他條件均不滿足時應執行什麼操作。</p>
      </td>
    </tr>

    <tr>
      <td><strong>忽略缺失值</strong></td>
      <td>是否將缺失的訊息頭或 XPath 視為空字串（當 <strong>如果</strong> 選擇為 <em>Filename</em> 時不適用）。這樣可以避免缺少預期訊息頭或 XPath 時擲回錯誤，而是沿“does not match”流程路徑傳遞訊息。</td>
    </tr>
  </tbody>
</table>

### 設定

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

<NameDescription />

### 高階頁面 (Advanced Tab)

#### 訊息

<Message />

#### 日誌

<Logging />

#### 其他設定

| 設定       | 描述                                                                                                                                            |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **處理延遲** | 對放置在**交易**索引標籤中的檔案延遲處理的時間（以秒為單位）。這是舊版設定。最佳實踐是[使用 File 端口](../flows/designing-a-flow#interacting-with-the-local-file-system)管理本地檔案系統，而不是使用此設定。 |

#### 其他設定

<MiscConnector />

### 自動化頁面 (Automation Tab)

#### 自動化設定

| 設定     | 描述               |
| ------ | ---------------- |
| **傳送** | 到達端口的訊息是否自動進行處理。 |

#### 效能

<Performance />

### 通知索引標籤

<AlertsTab />

### SLA 索引標籤

<SlasTab />

## 使用 Branch 端口的範例

以下範例描述了常見的 Branch 端口用例。

### 根據訊息頭進行分支

在此範例中，您的企業從交易夥伴處收到多種型別的 EDI 文件，並且需要對不同型別的文件進行不同處理。

<img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/branch_flow_input.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=6580088f3936454523eaf07b174837e2" width="800" data-path="public/images/branch_flow_input.png" />

上圖展示了您向交易夥伴傳送採購訂單的情況。隨後他們向您傳送兩種不同型別的 EDI 文件：一種是 855 採購訂單確認，另一種是 810 發票。流程中 Branch 端口之前的 [X12 端口](./x12) 會將 **X12-TransactionCode** 附加到每個訊息頭。

<img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/branch_flow.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=e6b1d6f0ff0399ee147b8e72846537ea" width="800" data-path="public/images/branch_flow.png" />

Branch 端口使用訊息頭中的交易程式碼來告訴 {siteNameShort} 在收到 810 或 855 EDI 文件時要執行的操作，以及在收到不包含這兩種交易程式碼的文件時要執行的操作。

* 收到 810 文件後，流程中的下一步會將其傳送到後端系統的發票表（本例中為 PostgreSQL）。
* 收到 855 文件後，流程的下一步會將其傳送到後端系統中的 PO 確認表。
* 收到任何其他型別的文件時，**Else** 條件會使用 [Notify 端口](./notify) 向管理員傳送電子郵件以進行手動處理。

### 基於 EDI 中繼資料的分支

在此範例中，您的企業從多家公司接收 X12 文件，並且需要將兩家公司的文件傳送到特定[工作區](../flows/workspaces)進行進一步處理。

<img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/branch_edimetadata.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=404ebd308bacc553f9446182363c0335" width="800" data-path="public/images/branch_edimetadata.png" />

上圖展示了兩家公司向您傳送 X12 文件的情況。Branch 端口使用 X12 中繼資料 **InterchangeSenderId** 來指定文件的傳送目的地。

* 收到來自 CompanyA 的文件時，流程的下一步會將其傳送到 CompanyA 工作區。
* 收到來自 CompanyB 的文件時，流程的下一步會將其傳送到 CompanyB 工作區。
* 收到任何其他型別的文件時，**Else** 條件會使用 [Notify 端口](./notify) 向管理員傳送電子郵件，提醒他們傳入的 X12 文件與兩個預期公司之一不匹配。

公司特定的工作區隨後可能包含一個用於接收傳入文件的 [Workspace Receive](./workspace-receive) 端口（由於 Branch 流程中使用了 [Workspace Send](./workspace-send) 端口，因此必須包含），一個帶有識別碼、可將原始 X12 資料轉換為 XML 的 [X12 端口](./x12)，一個用於將 XML 對映到目標的 [XML Map](./xml-map/xml-map) 端口，最後是目標端口（下圖中的 [PostgreSQL](./postgresql/postgresql)）。

<img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/branch_edimetadata_output.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=42ea4a44a93b09de32854cc8c048ccdd" width="800" data-path="public/images/branch_edimetadata_output.png" />
