Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring batch 如何将一个FlowStep中的步骤分组,并在失败后重新运行所有步骤?_Spring Batch - Fatal编程技术网

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

Spring batch 如何将一个FlowStep中的步骤分组,并在失败后重新运行所有步骤?,spring-batch,Spring Batch,我正在尝试使用SpringBatch来处理一系列预检查、验证和操作 如果预检查或验证失败,那么我希望重新运行所有预检查和验证,无论它们以前成功或失败;但是如果一个动作失败了,我只想从失败的动作开始 我想将验证或预检查分组到一个步骤中,例如FlowStep,但Spring重试似乎不支持这一点 有人知道解决办法吗?提前谢谢 您可以在流程步骤中对两个步骤进行分组,如下所示: @Bean public Flow preCheckAndValidationFlow() { return new F

我正在尝试使用SpringBatch来处理一系列预检查、验证和操作

如果预检查或验证失败,那么我希望重新运行所有预检查和验证,无论它们以前成功或失败;但是如果一个动作失败了,我只想从失败的动作开始

我想将验证或预检查分组到一个步骤中,例如FlowStep,但Spring重试似乎不支持这一点


有人知道解决办法吗?提前谢谢

您可以在
流程步骤中对两个步骤进行分组,如下所示:

@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开始。可能吗?