#11 spring batch: SimpleFlow ex

This commit is contained in:
haerong22
2022-07-01 00:36:32 +09:00
parent 04a4cea83b
commit e11cdb9664
2 changed files with 141 additions and 1 deletions

View File

@@ -12,7 +12,7 @@ import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@Configuration //@Configuration
@RequiredArgsConstructor @RequiredArgsConstructor
public class SimpleFlowConfiguration { public class SimpleFlowConfiguration {

View File

@@ -0,0 +1,140 @@
package io.springbatch.basic.flow;
import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.job.builder.FlowBuilder;
import org.springframework.batch.core.job.flow.Flow;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@RequiredArgsConstructor
public class SimpleFlowExConfiguration {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
/*
flow1 (step1, step2) COMPLETED -> flow2 (flow3 (step3, step4), step5, step6)
FAILED -> flow3 (step3, step4)
*/
@Bean
public Job batchJob() {
return jobBuilderFactory.get("batchJob")
.incrementer(new RunIdIncrementer())
.start(flow1())
.on("COMPLETED")
.to(flow2())
.from(flow1())
.on("FAILED")
.to(flow3())
.end()
.build();
}
@Bean
public Flow flow1() {
FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("flow1");
flowBuilder
.start(step1())
.next(step2())
.end();
return flowBuilder.build();
}
@Bean
public Flow flow2() {
FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("flow2");
flowBuilder
.start(flow3())
.next(step5())
.next(step6())
.end();
return flowBuilder.build();
}
@Bean
public Flow flow3() {
FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("flow3");
flowBuilder
.start(step3())
.next(step4())
.end();
return flowBuilder.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.tasklet((contribution, chunkContext) -> {
System.out.println("step1 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step2() {
return stepBuilderFactory.get("step2")
.tasklet((contribution, chunkContext) -> {
System.out.println("step2 was executed");
throw new RuntimeException("step2 was failed");
// return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step3() {
return stepBuilderFactory.get("step3")
.tasklet((contribution, chunkContext) -> {
System.out.println("step3 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step4() {
return stepBuilderFactory.get("step4")
.tasklet((contribution, chunkContext) -> {
System.out.println("step4 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step5() {
return stepBuilderFactory.get("step5")
.tasklet((contribution, chunkContext) -> {
System.out.println("step5 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step6() {
return stepBuilderFactory.get("step6")
.tasklet((contribution, chunkContext) -> {
System.out.println("step6 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
}