Проблема заключается в следующем: у меня есть задание Spring Batch с одним шагом.Этот шаг вызывается несколько раз.Если каждый раз, когда он вызывается, все работает нормально (без исключений), статус задания «ЗАВЕРШЕН».Если что-то плохое случается хотя бы в одном из исполнений Step (исключение выдается), я настроил StepListener, который изменяет код выхода на FAILED:
public class SkipCheckingListener extends StepExecutionListenerSupport {
public ExitStatus afterStep(StepExecution stepExecution) {
String exitCode = stepExecution.getExitStatus().getExitCode();
if (stepExecution.getProcessorSkipCount() > 0) {
return new ExitStatus(ExitStatus.FAILED);
}
else {
return null;
}
}
}
Это нормально работает, когда условиевыполняется блок "if", и задание завершается со статусом FAILED.Однако обратите внимание, что код возврата, который я здесь возвращаю, по-прежнему является одним из стандартных, которые поставляются с Spring Batch.Я хотел бы вернуть свой персонализированный код выхода, такой как «ЗАВЕРШЕНО С ПРОХОДАМИ» в определенные моменты.Теперь я попытался обновить приведенный выше код, чтобы он возвращал только:
public class SkipCheckingListener extends StepExecutionListenerSupport {
public ExitStatus afterStep(StepExecution stepExecution) {
String exitCode = stepExecution.getExitStatus().getExitCode();
if (stepExecution.getProcessorSkipCount() > 0) {
return new ExitStatus("COMPLETED WITH SKIPS");
}
else {
return null;
}
}
}
, как описано в документации: http://static.springsource.org/spring-batch/reference/html/configureStep.html (5.3.2.1. Состояние партии в сравнении с состоянием выхода).Я даже пытался
stepExecution.getJobExecution().setExitStatus("COMPLETED WITH SKIPS");
И, конечно же, выполнение прибывает в блок "if", выполняет код, и все же моя работа заканчивается с кодом завершения COMPLETED, полностью игнорируя код завершения, который ячерез слушателя.
Более подробно об этом нет в их документах, и я ничего не нашел с помощью Google.Может кто-нибудь, пожалуйста, скажите мне, как мне изменить код выхода из Job таким образом?Thanx