@Test public void testBuildWithStopAndRestart() throws Exception { SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(fails); builder.on("FAILED").stopAndRestart(step2); Job job = builder.build(); job.execute(execution); assertEquals(BatchStatus.STOPPED, execution.getStatus()); assertEquals(1, execution.getStepExecutions().size()); execution = jobRepository.createJobExecution("flow", new JobParameters()); job.execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(1, execution.getStepExecutions().size()); assertEquals("step2", execution.getStepExecutions().iterator().next().getStepName()); }
@Test public void testBuildWithIntermediateSimpleJobTwoSteps() throws Exception { SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step1).next(step2); builder.on("FAILED").to(step3).end(); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(2, execution.getStepExecutions().size()); }
@Test public void testBuildWithIntermediateSimpleJob() throws Exception { SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step1); builder.on("COMPLETED").to(step2).end(); builder.preventRestart(); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(2, execution.getStepExecutions().size()); }
@Test public void testBuildOnOneLine() throws Exception { FlowJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step1).on("COMPLETED") .to(step2).end().preventRestart(); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(2, execution.getStepExecutions().size()); }
@Test public void testBuildOverTwoLines() throws Exception { FlowJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step1).on("COMPLETED") .to(step2).end(); builder.preventRestart(); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(2, execution.getStepExecutions().size()); }
@Test public void testBuildWithCustomEndState() throws Exception { SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step1); builder.on("COMPLETED").end("FOO"); builder.preventRestart(); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals("FOO", execution.getExitStatus().getExitCode()); assertEquals(1, execution.getStepExecutions().size()); }
@Test public void testBuildWithStop() throws Exception { SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step1); builder.on("COMPLETED").stop(); builder.preventRestart(); builder.build().execute(execution); assertEquals(BatchStatus.STOPPED, execution.getStatus()); assertEquals("STOPPED", execution.getExitStatus().getExitCode()); assertEquals(1, execution.getStepExecutions().size()); }
@Bean public Job splitJob(@Qualifier("foo") Flow foo, @Qualifier("foo") Flow bar) { FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("split"); Flow flow = flowBuilder.split(new SimpleAsyncTaskExecutor()) .add(foo, bar) .end(); return jobBuilderFactory.get("splitJob") .start(myStep1()) .next(myStep2()) .on("COMPLETED").to(flow) .end() .build(); } }
@Bean public Job transitionJobSimpleNext() { return jobBuilderFactory.get("transitionJobNext") .start(step1()) .on("COMPLETED").to(step2()) .from(step2()).on("COMPLETED").stopAndRestart(step3()) .from(step3()).end() .build(); } }