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

DM Step 畫面

Reader 內容

Transformer 內容

Writer 內容

透過 Writer 產出的 .sh 檔內容
再建立 Job Step: STEP02,種類為 External Command Step,執行由 STEP01 產出的 .sh 檔。
透過 .sh 檔內容,執行 Job 清單中的 Job。
透過 .sh 檔內容,執行 Job 清單中的 Job。

External Command Step 內容

External Command Step 執行結果

透過 Task Console 頁面可以觀察到 Job 清單中的 Job 已被執行
步驟二
設計 Job 「002_CHECK_JOB」,目的是檢驗目標 Job 的執行狀態。(「目標 Job」 指的是步驟一之 Job 清單)。
需勾選 Job 屬性頁面中的「Use Step Postcondition」
設計 Job 「002_CHECK_JOB」,目的是檢驗目標 Job 的執行狀態。(「目標 Job」 指的是步驟一之 Job 清單)。
需勾選 Job 屬性頁面中的「Use Step Postcondition」

建立 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 狀態)。
若 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 檢驗執行狀態,確保在自動化動態產生該次的隱碼作業後,所有作業能按照正確的業務流程依序進行,使隱碼流程的每一階段工作完整執行、無疏漏。