[英]How do I get the ID of the previous step execution in the next step of a spring batch job?
如何獲得Spring Batch作業的下一步中上一步執行的ID?
我目前正在嘗試對一組數據執行幾個步驟,並將它們持久存儲在數據庫的不同行中。
每個步驟(第一個步驟除外)都將讀取先前步驟的結果並對其進行進一步處理,然后將更新的結果保存在新行中。
我有一個自定義讀取器,該讀取器從數據庫中讀取數據,但是我需要將上一步執行的ID傳遞給當前步驟,以便它可以相應地查詢存儲庫。
我該怎么做呢?
請按照以下步驟操作:
1.從當前的Step,將數據傳遞到StepExecutionContext
。
2.從當前StepExecutionContext
,將數據傳遞給JobExecutionContext
(通過listener
)
3. JobExecutionContext
在所有步驟之間共享,因此您現在可以獲取先前Steps
數據。
另一種方法是將該臨時Step數據存儲在DB的表中JobExecutionId,StepExecutionId,StepData
一種選擇是使用將在執行步驟之前和之后調用的StepExecutionListener
。 afterStep
方法具有StepExecution
對象。 您可以使用此StepExecution
設置下一步所需的所有參數。
例如:
currentStep.registerStepExecutionListener(new StepExecutionListener() {
@Override
public void beforeStep(StepExecution stepExecution) {}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
nextStep.setParameter(stepExecution.getExecutionContext().getString(param)
return ExitStatus.COMPLETED;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.