Refine search
@Bean public Step lastStep() { return stepBuilderFactory.get("lastStep") .tasklet(new Tasklet() { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { System.out.println(">> Ending concurrent job test"); return RepeatStatus.FINISHED; } }).build(); }
protected Step createPartitionStep() { PartitionStepBuilder builder; if (partitioner != null) { builder = new StepBuilder(name).partitioner(step != null ? step.getName() : name, partitioner).step(step); } else { builder = new StepBuilder(name).partitioner(step); } enhanceCommonStep(builder); if (partitionHandler != null) { builder.partitionHandler(partitionHandler); } else { builder.gridSize(gridSize); builder.taskExecutor(taskExecutor); } builder.aggregator(stepExecutionAggregator); return builder.build(); }
/** * Creates a step builder and initializes its job repository and transaction manager. Note that if the builder is * used to create a @Bean definition then the name of the step and the bean name might be different. * * @param name the name of the step * @return a step builder */ public StepBuilder get(String name) { StepBuilder builder = new StepBuilder(name).repository(jobRepository).transactionManager( transactionManager); return builder; }
protected Step createFlowStep() { FlowStepBuilder builder = new StepBuilder(name).flow(flow); enhanceCommonStep(builder); return builder.build(); }
/** * @return a new {@link TaskletStep} */ protected TaskletStep createTaskletStep() { TaskletStepBuilder builder = new StepBuilder(name).tasklet(tasklet); enhanceTaskletStepBuilder(builder); return builder.build(); }
@Bean public Step partitionStep(){ return stepBuilders.get("partitionStep") .partitioner(flatfileToDbStep()) .partitioner("flatfileToDbStep", partitioner()) .taskExecutor(infrastructureConfiguration.taskExecutor()) .build(); }
@Before public void setUp() { ItemReader<Integer> itemReader = new ListItemReader<>(createItems()); ItemProcessor<Integer, Integer> itemProcessor = item -> item > 20 ? null : item; ItemWriter<Integer> itemWriter = chunk -> { if (chunk.contains(1)) { throw new IllegalArgumentException(); } }; skipPolicy = new SkipIllegalArgumentExceptionSkipPolicy(); stepBuilder = new StepBuilderFactory(jobRepository, transactionManager).get("step") .<Integer, Integer>chunk(CHUNK_SIZE) .reader(itemReader) .processor(itemProcessor) .writer(itemWriter) .faultTolerant(); }
@Test public void testAnnotationBasedChunkListenerForSimpleTaskletStep() throws Exception { JobRepository jobRepository = new MapJobRepositoryFactoryBean().getObject(); StepExecution execution = jobRepository.createJobExecution("foo", new JobParameters()).createStepExecution("step"); jobRepository.add(execution); PlatformTransactionManager transactionManager = new ResourcelessTransactionManager(); SimpleStepBuilder<Object, Object> builder = new StepBuilder("step") .repository(jobRepository) .transactionManager(transactionManager) .chunk(5) .reader(new DummyItemReader()) .writer(new DummyItemWriter()) .listener(new AnnotationBasedChunkListener()); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(1, AnnotationBasedChunkListener.beforeChunkCount); assertEquals(1, AnnotationBasedChunkListener.afterChunkCount); }
@Test public void test() throws Exception { JobRepository jobRepository = new MapJobRepositoryFactoryBean().getObject(); StepExecution execution = jobRepository.createJobExecution("foo", new JobParameters()).createStepExecution( "step"); jobRepository.add(execution); PlatformTransactionManager transactionManager = new ResourcelessTransactionManager(); TaskletStepBuilder builder = new StepBuilder("step").repository(jobRepository) .transactionManager(transactionManager).tasklet((contribution, chunkContext) -> null); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); }
@Override public <I, O> SimpleStepBuilder<I, O> chunk(CompletionPolicy completionPolicy) { configureWorkerIntegrationFlow(); return super.chunk(completionPolicy); }
.<Quad, Quad>chunk(chunkSize) .reader(reader) .processor(processor) .partitioner(slaveStep) .partitioner(name, partitioner) .taskExecutor(taskExecutor)
@Override public TaskletStepBuilder tasklet(Tasklet tasklet) { configureWorkerIntegrationFlow(); return super.tasklet(tasklet); }
/** * Create a new {@link RemoteChunkingMasterStepBuilder}. * * @param stepName name of the master step */ public RemoteChunkingMasterStepBuilder(String stepName) { super(new StepBuilder(stepName)); }
@Test public void testAnnotationBasedChunkListenerForJobStepBuilder() throws Exception { JobRepository jobRepository = new MapJobRepositoryFactoryBean().getObject(); StepExecution execution = jobRepository.createJobExecution("foo", new JobParameters()).createStepExecution("step"); jobRepository.add(execution); PlatformTransactionManager transactionManager = new ResourcelessTransactionManager(); SimpleJob job = new SimpleJob("job"); job.setJobRepository(jobRepository); JobStepBuilder builder = new StepBuilder("step") .repository(jobRepository) .transactionManager(transactionManager) .job(job) .listener(new AnnotationBasedChunkListener()); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); // it makes no sense to register a ChunkListener on a step which is not of type tasklet, so it should not be invoked assertEquals(0, AnnotationBasedChunkListener.beforeChunkCount); assertEquals(0, AnnotationBasedChunkListener.afterChunkCount); }
@Override public PartitionStepBuilder partitioner(String stepName, Partitioner partitioner) { configureWorkerIntegrationFlow(); return super.partitioner(stepName, partitioner); }