Cómo ejecutar trabajos por lotes de primavera en paralelo

Tengo un flujo de trabajo y me gustaría ejecutarlo de la siguiente manera:

Job1 -> Job2 -> Job3  
     -> Job4 -> Job5

El flujo de trabajo se iniciará desde Job1. Después de que Job1 finalice con éxito, Job1 iniciará Job2 y Job4.
Job2 y Job4 se ejecutarán en paralelo.
Después de que Job2 finalice con éxito, Job2 iniciará Job3.
Después de que Job4 finalice con éxito, Job4 iniciará Job5.

El siguiente es el fragmento de código para job1.xml y la clase de iniciador de trabajo de Job1:

job1.xml

<bean id="uiJobListener"
    class="com.joblaunch.UIJobListener">
    <property name="vmInfoImportUIBatchLauncher" ref="vmInfoImportUIBatchLauncher" />
    <property name="jobRepository" ref="jobRepository" />
</bean>

<bean id="uiBatchLauncher"
    class="com.joblaunch.UIBatchLauncher">
    <property name="simpleJobLauncher" ref="simpleJobLauncher" />
    <property name="jobLocator" ref="jobRegistry" />
    <property name="jobTwo" value="Job2" />
    <property name="jobFour" value="Job4" />
</bean>

<batch:job id="Job1" restartable="true">
    <batch:step id="stp01">
        <batch:tasklet ref="stp01Operator" />
        <batch:next on="COMPLETED" to="stp02" />
    </batch:step>

    <batch:step id="stp02">
        <batch:tasklet ref="stp02Result" />
    </batch:step>

    <batch:listeners>
        <batch:listener ref="uiJobListener" />
    </batch:listeners>
</batch:job>

UIJobLauncher.java

Job jobOne = jobLocator.getJob(jobTwo);
simpleJobLauncher.run(jobOne, builder.toJobParameters());

Job jobTwo = jobLocator.getJob(jobFour);
simpleJobLauncher.run(jobTwo, builder.toJobParameters());

El problema

Pero, cuando comencé Job1, Job1 lanzó Job2 y Job2 continuó a Job3.
Después de que Job3 haya terminado, Job1 lanzó Job4 y Job4 continuó a Job5.

El par "Job2, Job3" y el par "Job4, Job5" no se ejecutaron en paralelo. Aunque Job1 lanzó Job4, el flujo de trabajo se convirtió en el siguiente:

Job1 -> Job2 -> Job3 -> Job4 -> Job5

Entonces, ¿cómo se pueden ejecutar los trabajos por lotes de primavera en paralelo? ¿Hay alguna manera de ejecutar trabajos por lotes de Spring en paralelo tanto desde la interfaz de usuario de Spring Batch Admin como desde la línea de comandos?

Respuestas a la pregunta(1)

Su respuesta a la pregunta