簡體   English   中英

如何獲得Spring Batch作業的下一步中上一步執行的ID?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM