[英]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
,流動應該繼續step2
, step3
等..
為了再次澄清,我可以告訴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.