title: how to configure spring dataflow for spring batch
body: <p>I have spring batch project I want to configure it on spring cloud dataflow I m able to register it on SCDF but on launching task my job is not running
  following is my configuration file</p>
  
  <pre><code>@SpringBootApplication
  @EnableBatchProcessing
  @EnableTask
  public class BatchApplication {
  /*@Autowired
  BatchCommandLineRunner batchcommdrunner;
  
  @Bean
  public CommandLineRunner commandLineRunner() {
      System.out.println("Executed at :" +  new SimpleDateFormat().format(new Date()));
      return batchcommdrunner ;
  }*/
  
  public static void main(String[] args) {
      SpringApplication.run(BatchApplication.class, args);
  }
  }
  </code></pre>
  
  <p>And this is my batch confriguration file</p>
  
  <pre><code>@Configuration
  public class BatchConfiguaration {
  
  @Autowired
  private DataSource datasouce;
  
  @Autowired
  private JobBuilderFactory jobBuilderFactory;
  
  @Autowired
  private StepBuilderFactory stepBuilderFactory;
  
  @Autowired
  public Environment env;
  
  @Bean(name = "reader")
  @StepScope
  public ItemReader&lt;Schedules&gt; reader(@Value("#{stepExecutionContext[scheduleRecs]}") List&lt;Schedules&gt; scherecs) {
      ItemReader&lt;Schedules&gt; reader = new IteratorItemReader&lt;Schedules&gt;(scherecs);
      return reader;
  }
  
  @Bean(name = "CWSreader")
  @StepScope
  public ItemReader&lt;Contents&gt; CWSreader(@Value("#{stepExecutionContext[scheduleRecs]}") List&lt;Contents&gt; scherecs) {
      ItemReader&lt;Contents&gt; reader = new IteratorItemReader&lt;Contents&gt;(scherecs);
      return reader;
  }
  
  @SuppressWarnings("rawtypes")
  @Bean
  @StepScope
  public BatchProcessor processor() {
      return new BatchProcessor();
  }
  
  @Bean(name = "batchSchedulePreparedStatement")
  @StepScope
  public BatchSchedulePreparedStatement batchSchedulePreparedStatement() {
      return new BatchSchedulePreparedStatement();
  }
  
  
  @SuppressWarnings({ "rawtypes", "unchecked" })
  @Bean(name = "batchWriter")
  @StepScope
  public BatchWriter batchWriter() {
      BatchWriter batchWriter = new BatchWriter();
      batchWriter.setDataSource(datasouce);
      batchWriter.setSql(env.getProperty("batch.insert.schedule.query"));
      batchWriter.setItemPreparedStatementSetter(batchSchedulePreparedStatement());
      return batchWriter;
  
  }
  
  
  @Bean("acheronDbTm")
  @Qualifier("acheronDbTm")
  public PlatformTransactionManager platformTransactionManager() {
      return new ResourcelessTransactionManager();
  }
  
  @Bean
  public JobExplorer jobExplorer() throws Exception {
      MapJobExplorerFactoryBean explorerFactoryBean = new MapJobExplorerFactoryBean();
      explorerFactoryBean.setRepositoryFactory(mapJobRepositoryFactoryBean());
      explorerFactoryBean.afterPropertiesSet();
      return explorerFactoryBean.getObject();
  }
  
  @Bean
  public MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean() {
      MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean = new MapJobRepositoryFactoryBean();
      mapJobRepositoryFactoryBean.setTransactionManager(platformTransactionManager());
      return mapJobRepositoryFactoryBean;
  }
  
  @Bean
  public JobRepository jobRepository() throws Exception {
      return mapJobRepositoryFactoryBean().getObject();
  }
  
  @Bean
  public SimpleJobLauncher jobLauncher() throws Exception {
      SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
      jobLauncher.setJobRepository(jobRepository());
      return jobLauncher;
  }
  
  @Bean(name = "batchPartition")
  @StepScope
  public BatchPartition batchPartition() {
      BatchPartition batchPartition = new BatchPartition();
      return batchPartition;
  }
  
  
  
  @Bean(name="taskExecutor")
  public TaskExecutor taskExecutor() {
      ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor();
      poolTaskExecutor.setCorePoolSize(10);
      poolTaskExecutor.setMaxPoolSize(30);
      poolTaskExecutor.setQueueCapacity(35);
      poolTaskExecutor.setThreadNamePrefix("Acheron");
      poolTaskExecutor.afterPropertiesSet();
      return poolTaskExecutor;
  }
  
  @Bean(name = "masterStep")
  public Step masterStep() {
      return stepBuilderFactory.get("masterStep").partitioner(slave()).partitioner("slave", batchPartition())
              .taskExecutor(taskExecutor()).build();
  }
  
  
  @Bean(name = "slave")
  public Step slave() {
      return stepBuilderFactory.get("slave").chunk(100).faultTolerant().retryLimit(2)
              .retry(DeadlockLoserDataAccessException.class).reader(reader(null)).processor(processor())
              .writer(batchWriter()).build();
  
  }
  
  
  @Bean(name = "manageStagingScheduleMaster")
  public Job manageStagingScheduleMaster(final Step masterStep) throws Exception {
      return jobBuilderFactory.get("manageStagingScheduleMaster").preventRestart().incrementer(new RunIdIncrementer())
              .start(masterStep).build();
  }
  </code></pre>
  
  <p>can anyone help me to configure it properly or is there any other way where I can monitor my batch jobs
  I also tried with Spring boot admin but it is not supporting java configuration in SBA is there any way to add jobs without jobs in xml</p>
  
  <p>I am launcing this job from controller</p>
  
  <pre><code>JobParametersBuilder builder = new JobParametersBuilder();
      System.out.println("Job Builder " + builder);
      JobParameters jobParameters = builder.toJobParameters();
      JobExecution execution = jobLauncher.run(job, jobParameters);
      return execution.getStatus().toString();
  </code></pre>