Spring-Batch: ¿cómo devuelvo un código de salida de trabajo personalizado de un StepListener

El problema es este: tengo un trabajo de Spring Batch con un solo paso. Este paso se llama varias veces. Si cada vez que se llama, todo funciona bien (sin excepciones), el estado del trabajo es "COMPLETADO". Si ocurre algo malo al menos en una de las ejecuciones del Paso (se produce una excepción), he configurado un StepListener que cambia el código de salida a 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;
        }
    }

}

Esto funciona bien, cuando se cumple la condición, el bloque "si" se ejecuta y el trabajo finaliza con el estado FALLO. Sin embargo, tenga en cuenta que el código de salida que regreso aquí todavía se encuentra entre los estándares que vienen con Spring Batch. Me gustaría devolver mi código de salida personalizado, como "COMPLETADO CON SKIPS" en ciertos puntos. Ahora he intentado actualizar el código anterior para devolver solo eso:

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;
        }
    }

}

tal como se describe en los documentos:http: //static.springsource.org/spring-batch/reference/html/configureStep.htm (5.3.2.1. Estado del lote frente al estado de salida). Incluso he intentado

stepExecution.getJobExecution().setExitStatus("COMPLETED WITH SKIPS");

Y, efectivamente, la ejecución llega al bloque "if", ejecuta el código, y aún así mi trabajo termina con el código de salida COMPLETADO, ignorando completamente el código de salida que configuré a través del oyente.

No hay más detalles sobre esto en sus documentos, y no he encontrado nada usando Google. ¿Puede alguien decirme cómo hago para cambiar el código de salida de Job de esta manera? Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta