#11 spring batch: FlowJob api - start(), next()
This commit is contained in:
@@ -10,7 +10,7 @@ import org.springframework.batch.repeat.RepeatStatus;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
//@Configuration
|
||||
@RequiredArgsConstructor
|
||||
public class FlowJobConfiguration {
|
||||
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
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 StartNextConfiguration {
|
||||
|
||||
private final JobBuilderFactory jobBuilderFactory;
|
||||
private final StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
/*
|
||||
이 구성은 Step 을 Flow 별로 분리하여 구성하는 장점은 있지만
|
||||
Step 중 하나라도 실패할 경우 전체 Job 이 실패하는 규칙은 동일
|
||||
|
||||
flowA (step1 -> step2) -> step3 -> flowB (step4 -> step5) -> step6
|
||||
*/
|
||||
@Bean
|
||||
public Job batchJob() {
|
||||
return jobBuilderFactory.get("batchJob")
|
||||
.incrementer(new RunIdIncrementer())
|
||||
.start(flowA())
|
||||
.next(step3())
|
||||
.next(flowB())
|
||||
.next(step6())
|
||||
.end()
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Flow flowA() {
|
||||
FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("flowA");
|
||||
flowBuilder
|
||||
.start(step1())
|
||||
.next(step2())
|
||||
.end();
|
||||
|
||||
return flowBuilder.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Flow flowB() {
|
||||
FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("flowB");
|
||||
flowBuilder
|
||||
.start(step4())
|
||||
.next(step5())
|
||||
.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");
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user