2017-01-19 2 views
0

Я сделал проект с Spring Batch несколько месяцев назад.Использование JobExecutionDecider с весенним загрузочным пакетом

Этот проект работает отлично, и в том числе реализацию JobExecutionDecider

public class BatchDecider implements JobExecutionDecider { 
private static final Logger log = LoggerFactory.getLogger(BatchDecider.class); 

@Autowired 
ConfigurationServiceWs config; 

public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { 

    if (codition) { 

     return new FlowExecutionStatus("AGAIN"); 
    } else { 

     return new FlowExecutionStatus("FINISH"); 
    } 
} 

Это работает Фини только с Spring Batch.

Теперь я должен использовать его с весной Boot Batch. Весь процесс работает нормально до этапа принятия решения. Где я возвращаю хороший FlowExecutionStatus, но я не знаю почему, работа завершена с статусом «FAILED».

2017-01-19 17:11:35.347 DEBUG 23056 --- [nio-8081-exec-1] o.s.b.core.job.flow.support.SimpleFlow : Completed state=Global Job.decision0 with status=AGAIN 
2017-01-19 17:11:39.074 DEBUG 23056 --- [nio-8081-exec-1] o.s.b.core.job.flow.support.SimpleFlow : Handling state=Global Job.FAILED 
2017-01-19 17:11:41.002 DEBUG 23056 --- [nio-8081-exec-1] o.s.b.core.job.flow.support.SimpleFlow : Completed state=Global Job.FAILED with status=FAILED 
2017-01-19 17:11:43.170 DEBUG 23056 --- [nio-8081-exec-1] o.s.batch.core.job.AbstractJob   : Job execution complete: JobExecution: id=0, version=1, startTime=Thu Jan 19 17:11:12 CET 2017, endTime=null, lastUpdated=Thu Jan 19 17:11:12 CET 2017, status=FAILED, exitStatus=exitCode=FAILED;exitDescription=, job=[JobInstance: id=0, version=0, Job=[Global Job]], jobParameters=[{time=1484842272108}] 

У кого-то есть идея, почему не работает?

Спасибо!

+0

Вы уверены, что код был выполнен как 'condition' работает нормально без ошибок? –

+0

Да, как вы можете видеть на первой строке журнала, статус «status = AGAIN». И в режиме отладки передаю условие. В классе Spring-Batch SilpmeFlow я вижу эволюцию состояния, и FAILED появляется после состояния, ПОЛУЧЕННОГО РЕШЕНИЕМ. –

ответ

1

Я нашел решение.

Я использую решающий элемент, чтобы сделать цикл на моей Работе.

Я использовал это:

@Bean(name = "myJob") 
public Job importUserJob() { 
    return jobBuilderFactory.get("Global Job") 
      .incrementer(new RunIdIncrementer()) 
      .flow(getListeDocMiseADispo()) 
      .next(decider).on("FINISH").end() 

      .next(boucle()) 
      .next(decider).on("AGAIN").to(boucle()) 

      .end() 
      .build(); 
} 

И работа с этим:

@Bean(name = "myJob") 
public Job importUserJob() { 
    return jobBuilderFactory.get("Global Job") 
      .incrementer(new RunIdIncrementer()) 
      .flow(getListeDocMiseADispo()) 
      .next(decider).on("AGAIN").to(boucle()) 
      .next(decider).on("FINISH").end() 

      .next(boucle()) 
      .next(decider).on("AGAIN").to(boucle()) 

      .end() 
      .build(); 
} 

Но я не знаю, почему. Возможно, Spring-boot-batch-starter обновляет мою пакетную версию и ломает это?

кто-то знает что-то.

Смежные вопросы