Spring-Batch: как вернуть пользовательский код завершения задания из StepListener

Проблема заключается в следующем: у меня есть работа 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");

И, конечно же, выполнение прибывает в блок «если», выполняет код, и все же моя работа заканчивается с кодом завершения COMPLETED, полностью игнорируя код завершения, который я установил через слушателя.

Более подробно об этом нет в их документах, и я ничего не нашел с помощью Google. Может кто-нибудь, пожалуйста, скажите мне, как мне изменить код выхода из Job таким образом? Thanx

Ответы на вопрос(1)

Ваш ответ на вопрос