Ich habe ein Projekt mit Spring Batch vor ein paar Monaten gemacht.Verwenden von JobExecutionDecider mit Spring Boot Batch
Dieses Projekt funktioniert gut und ist eine Implementierung von 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");
}
}
Das hat funktioniert fini mit nur Spring Batch inklusive.
Jetzt muss ich es mit Spring Boot Batch verwenden. Der gesamte Prozess funktioniert bis zum Entscheidungsschritt. Wo ich den guten FlowExecutionStatus zurückgeben kann, aber ich weiß nicht warum, wird der Job mit einem "FAILED" Status abgeschlossen.
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}]
Jemand hat eine Idee, warum nicht funktioniert?
Danke!
Sind Sie sicher, Code ausgeführt als 'Bedingung' funktioniert einwandfrei ohne Fehler? –
Ja, wie Sie in der ersten Protokollzeile sehen können, lautet der Status "status = AGAIN". Und im Debug-Modus gebe ich die Bedingung weiter. In der SilpmeFlow-Klasse von Spring-Batch kann ich die Entwicklung des Zustands sehen, und der FEHLER erscheint nach dem Status COMPLETED des Entscheiders. –