如何将一个步骤中的步骤分组并在失败后重新运行所有步骤?

时间:2018-07-14 13:48:58

标签: spring-batch

我正在尝试使用Spring Batch一起处理一堆预检查,验证和操作。

如果预检查或验证失败,那么我想重新运行所有预检查和验证,无论它们先前成功还是失败;但是如果操作失败,我只想从失败的操作开始。

我想在诸如FlowStep之类的步骤中对验证或预检查进行分组,但是似乎Spring retry不支持此功能。

有人知道解决方案吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

您可以在FlowStep中将两个步骤分组,如下所示:

@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;
}

如果您想让preCheckStep在验证步骤失败时重新运行(即使第一次成功),那么您需要在{{1}上设置allowStartIfComplete标志}。

IMO,创建包含预检查和验证逻辑的单个步骤会更加简单。