隱碼流程的韌性設計:
打造自我修復、高可靠性的流程架構
透過容錯設計提升隱碼流程的穩定性和連續性。
問題情景
自動化隱碼流程具有高度彈性、自動化的特性,可依當下資料庫內容,動態產出相應的 Job。 然而自動化流程可能無法克服意料之外的問題,我們須確保即使流程中的任一作業失敗,也能及時偵測,並保證作業皆能按照隱碼流程依序進行,不能發生「前一階段作業失敗,而後續階段作業卻開始執行」的情況,避免流程管理上的困擾。
解決方式
建立 2 支 Job,做為「執行作業」及「檢驗狀態」的功用,後者採用 Job Stream 功能自動帶起,配合使用 Trinity Job Step 中的 Post Condition 功能,設定自動化重驗機制。
參考流程
建立兩支 Trinity Job,分別命名為「001_MASK_JOBLIST」及「002_CHECK_JOB」,並將「001_MASK_JOBLIST」設定 Job Stream 自動帶起「002_CHECK_JOB」。
這兩支 Trinity Job 的功能分別是:
這兩支 Trinity Job 的功能分別是:
- 001_MASK_JOBLIST:製作一張待執行的 Trinity Job 順序列表,並觸發列表中的 Trinity Job 依序執行。
- 002_CHECK_JOB:檢驗 Trinity Job 執行後的工作狀態,直到全數作業執行成功,才結束檢驗工作。
參考步驟
- 新增 Trinity Job ,命名為「001_MASK_JOBLIST」,並於其項下新增 Trinity Job Step,Step 種類請選擇 DM Step,Step 名稱命名為「STEP01」。
- 編輯 DM Step ,內容如下:
- 加入 Reader,用以彙整所需執行的 Job 清單
- 加入 Transformer,用以設定 Transformer rule,使用 concat function,組成呼叫指令。
- 加入 Writer,用以產出 .sh 檔。

DM Step 畫面

Reader 內容

Transformer 內容

Writer 內容

透過 Writer 產出的 .sh 檔內容
- 新增 Trinity Job ,命名為「001_MASK_JOBLIST」,並於其項下新增 Trinity Job Step,Step 種類請選擇 External Command Step,Step 名稱命名為「STEP02」。
- 編輯 External Command Step ,輸入 Command 以執行由 STEP01 產出的 .sh 檔。

External Command Step 內容

External Command Step 執行結果

透過 Task Console 頁面可以觀察到 Job 清單中的 Job 已被執行
- 新增 Trinity Job ,命名為「002_CHECK_JOB」,並於 General 頁面中勾選「Use Step Postcondition」

- 於此 Trinity Job 項下新增 Trinity Job Step,Step 種類請選擇 DM Step
- 編輯 DM Step,內容為 SQL Executor。


SQL Executor 內容

SQL Executor 內容(接續前圖)

SQL Executor 內容(接續前圖)
- 至此 STEP 的 Postcondition 頁面,設定執行規則。
- 若 QUITCODE 值為 0,可結束此 STEP 的執行,STEP 狀態為成功(Success)。
- 若 QUITCODE 值為 1,可結束此 STEP 的執行,STEP 狀態為失敗(Error)。
- 若非前述兩者,則於等待 10 分鐘後,重新執行此 STEP 內容 (重新檢驗 Job 狀態)。

Postcondition 頁面內容
總結:
透過 Job 「001_MASK_JOBLIST」自動盤點所需執行的 Job 清單並觸發 Job 執行,再利用 Job Stream 機制自動接續執行 Job 「002_CHECK_JOB」為這些被觸發的 Job 檢驗執行狀態,確保在自動化動態產生該次的隱碼作業後,所有作業能按照正確的業務流程依序進行,使隱碼流程的每一階段工作完整執行、無疏漏。
透過 Job 「001_MASK_JOBLIST」自動盤點所需執行的 Job 清單並觸發 Job 執行,再利用 Job Stream 機制自動接續執行 Job 「002_CHECK_JOB」為這些被觸發的 Job 檢驗執行狀態,確保在自動化動態產生該次的隱碼作業後,所有作業能按照正確的業務流程依序進行,使隱碼流程的每一階段工作完整執行、無疏漏。
