SpringBatch-基礎開發之作業流Flow

FLOW XML 技術 用Java打醬油 用Java打醬油 2017-09-29

在開始作業流開發之前需要先了解SpringBatch中的BatchStatus和ExitStatus這兩個狀態的含義。

BatchStatus和ExitStatus含義

1.BatchStatus:批處理狀態

批處理狀態是由批處理框架使用,用來記錄Job、Step的執行情況。SpringBatch的重啟即是利用了BatchStauts來實現。對應BATCH_JOB_INSTANCE和BATCH_STEP_EXECUTION表中的STATUS字段值。

  • JobExecution.getStatus()獲取作業Job批處理狀態;

  • StepExecution.getStatus()獲取作業Step的批處理狀態;

批處理狀態屬性:

狀態說明
COMPLETED完成,所有Step都處理該狀態,則JOB會處理該狀態
STARTING表示作業正在啟動,還沒有啟動完畢
STARTED表示作業啟動完成
STOPING表示作業正在停止中
STOPED表示作業停止完成
FAILED表示作業執行失敗
ABANDONED表示當前下次重啟JOB時需要廢棄的Step,即不會被再次執行
UNKOWN表示未知錯誤,該狀態下重啟Job會拋錯

2.ExitStatus:退出狀態

退出狀態表示Step執行後或者Job執行後的狀態,該值要以被修改,通常用於條件Flow中

  • 可以通過攔截器StepExecutionListener的afterStep方法來修改退出狀態;

  • 對應BATCH_JOB_INSTANCE和BATCH_STEP_EXECUTION表中的EXIT_CODE字段值;

順序Flow

順序Flow的配置非常簡單,通過next指向下一個步驟

示例:三個步驟,執行順序:step1.hello->step2.clean->step3.copyData

SpringBatch-基礎開發之作業流Flow

順序Flow

條件Flow

顧名思義,根據條件判斷來決定流程走向。通過listener的afterStep方法來設置ExitStatus狀態,XML中根據ExitStatus的值來決定流程走向。

示例:step1.hello運行結束後:

  • 當ExistCode=T_FAILD,則執行step2.clean步驟;

  • 當ExistCode為其它值時,則執行other步驟;

XML配置:

SpringBatch-基礎開發之作業流Flow

條件Flow

監聽開發

監聽非常重要,根據Step運行的結果來設置ExitStatus,next即是根據ExitStatus來判斷流程走向

SpringBatch-基礎開發之作業流Flow

監聽類

注:通過stepExecution可以獲取Job的運行參數和Step的運行參數。

Launch啟動器

SpringBatch-基礎開發之作業流Flow

啟動器

運行結果

當flowDeciderType參數值=true時

SpringBatch-基礎開發之作業流Flow

運行結果

當flowDeciderType參數值=false時

SpringBatch-基礎開發之作業流Flow

運行結果

更多SpringBatch開發文檔,移步到我的頭條號。

如果本文對您有用,請順手給個贊!

相關推薦

推薦中...