Spring batch 如何将一个FlowStep中的步骤分组,并在失败后重新运行所有步骤?
我正在尝试使用SpringBatch来处理一系列预检查、验证和操作 如果预检查或验证失败,那么我希望重新运行所有预检查和验证,无论它们以前成功或失败;但是如果一个动作失败了,我只想从失败的动作开始 我想将验证或预检查分组到一个步骤中,例如FlowStep,但Spring重试似乎不支持这一点Spring batch 如何将一个FlowStep中的步骤分组,并在失败后重新运行所有步骤?,spring-batch,Spring Batch,我正在尝试使用SpringBatch来处理一系列预检查、验证和操作 如果预检查或验证失败,那么我希望重新运行所有预检查和验证,无论它们以前成功或失败;但是如果一个动作失败了,我只想从失败的动作开始 我想将验证或预检查分组到一个步骤中,例如FlowStep,但Spring重试似乎不支持这一点 有人知道解决办法吗?提前谢谢 您可以在流程步骤中对两个步骤进行分组,如下所示: @Bean public Flow preCheckAndValidationFlow() { return new F
有人知道解决办法吗?提前谢谢 您可以在
流程步骤中对两个步骤进行分组,如下所示:
@Bean
public Flow preCheckAndValidationFlow() {
return new FlowBuilder<SimpleFlow>("flow")
.start(preCheckStep())
.next(validationStep())
.build();
}
@Bean
public Step preCheckAndValidationStep(JobRepository jobRepository) {
FlowStep flowStep = new FlowStep();
flowStep.setFlow(preCheckAndValidationFlow());
flowStep.setJobRepository(jobRepository);
return flowStep;
}
@Bean
公共流预检查和验证流(){
返回新的FlowBuilder(“流”)
.start(预检查步骤())
.next(validationStep())
.build();
}
@豆子
公共步骤预检查验证步骤(JobRepository JobRepository){
FlowStep FlowStep=新的FlowStep();
setFlow(preCheckAndValidationFlow());
setJobRepository(jobRepository);
返回流程步骤;
}
如果要在验证步骤失败时重新运行preCheckStep
(即使第一次成功),则需要在preCheckStep
上设置allowstartificomplete
标志
在我看来,创建一个包含预检查和验证逻辑的单一步骤要简单得多。例如,FlowStep1=(预检查1,预检查2),FlowStep2=(valation1,validation2),TaskletStep1=action1,TaskletStep2=action2。然后,如果预检查程序2失败,在重试作业时,我希望预检查程序1和预检查程序2都重新运行;但如果操作1失败,则在重试作业时,仅从操作1开始。可能吗?