簡體   English   中英

春季批處理-向后執行一步或重新執行先前執行的步驟

[英]Spring batch - executing one step back OR Re-executing previously executed steps

我有一個春季批處理工作,可以說5個步驟( step1 --> step2 --> step3 --> step4 --> step5 )。 我已經配置了一個StepExectutionListener ,它偵聽2個事件

所有步驟的beforeStep()afterStep()

我的問題是,如果我當前處於beforeStep()方法中,並且要執行的步驟是step2 ,我可以再次使spring-batch執行step1嗎? 執行后step1 ,流動應該繼續step2step3等..

為了再次澄清,我可以告訴spring-batch從先前執行的步驟中再次“開始執行”嗎?

雖然我可能不推薦這種行為,但是,應該可以實現。 您需要做的是使用正確的退出代碼將step2配置為過渡到step1,並且step1必須能夠重新運行。

組態

<step id="step1" next="step2">
    <tasklet ref="someTasklet" allow-start-if-complete="true"/>
</step>
<step id="step2">
    <tasklet ref="someOtherTasklet"/>
    <listeners>
        <listener ref="loopingListener"/>
    </listeners>
    <next on="BACK" to="step1"/>
</step>

public class LoopingListener extends StepExecutionListenerSupport {

    @Override
    public ExitStatus afterStep(StepExecution stepExecution) {
        if(shouldLoop) {
            return new ExitStatus("BACK");
        } else {
            return stepExecution.getExitStatus();
        }
    }
}

您可以使用以下方法實現步驟的特定順序。

<step id="step1" next="step3">
<tasklet>(...)</tasklet>
</step>

next參數將定義下一個要執行的參數。 但是我不確定您是否可以退回到同一執行。 但是,如果您使用Spring,則可以重新啟動步驟

允許啟動,如果完成

真實。

另外,對於構建工作流程,請訪問http://docs.spring.io/spring-batch/2.2.x/apidocs/org/springframework/batch/core/job/builder/FlowBuilder.SplitBuilder.html

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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