Spring Batch (java-config) que ejecuta el paso después de un jobExeuctionDecider

Estoy tratando de configurar un flujo en lote de primavera usando java-config, este flujo básicamente tiene que hacer esto:

Ejecute un paso de inicio (que agrega un registro en la base de datos),

luego ejecute un decisor para verificar la existencia del archivo,

2.1. Si los archivos existen, ejecutará el trabajo de carga (que es otro flujo con un montón de pasos en paralelo)

Ejecute un paso final (que agrega un registro en la base de datos), esto siempre debe ejecutarse, incluso si no se ejecutó 2.1.

Intenté hacer esta configuración, pero el paso final nunca se ejecuta:

        Flow flow = new FlowBuilder<SimpleFlow>("commonFlow")
            .start(stepBuilderFactory.get("initStep").tasklet(initTasklet).build())
            .next(decider)
                .on(FlowExecutionStatus.COMPLETED.getName())
                    .to(splitFlow)
                .from(decider).on("*")
                    .end()
    .next(stepBuilderFactory.get("finishStep").tasklet(finishTasklet).build())
            .end();

Puedo hacer que funcione de la siguiente manera, pero no es elegante en absoluto:

    Step finishStep = stepBuilderFactory.get("finishStep").tasklet(finishTasklet).build();

    Flow flow = new FlowBuilder<SimpleFlow>("commonFlow")
            .start(stepBuilderFactory.get("initStep").tasklet(initTasklet).build())
            .next(decider)
                .on(FlowExecutionStatus.COMPLETED.getName())
                    .to(splitFlow)
                    .next(finishStep)
                .from(decider).on("*")
                    .to(finishStep)
            .end();

¿Alguien sabe cómo es la forma correcta de ejecutar un paso después de una decisión usando java-config?

Respuestas a la pregunta(1)

Su respuesta a la pregunta