@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 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()); }
@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 testBuildSplit() throws Exception { Flow flow = new FlowBuilder<Flow>("subflow").from(step1).end(); SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step2); builder.split(new SimpleAsyncTaskExecutor()).add(flow).end(); builder.preventRestart().build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(2, execution.getStepExecutions().size()); }
@Test public void testBuildDecision() throws Exception { JobExecutionDecider decider = new JobExecutionDecider() { private int count = 0; @Override public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { count++; return count<2 ? new FlowExecutionStatus("ONGOING") : FlowExecutionStatus.COMPLETED; } }; step1.setAllowStartIfComplete(true); SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step1); builder.next(decider).on("COMPLETED").end().from(decider).on("*").to(step1).end(); builder.preventRestart().build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(2, execution.getStepExecutions().size()); }