Я связал набор пакетных заданий Spring в заказе.
<batch:job id="rootJob">
<batch:step id="rootJob.step1">
<batch:job ref="externalJob1">
<batch:next on="COMPLETE" to="rootJob.step2">
</batch:step>
<batch:split id="rootJob.step2">
<batch:flow>
<batch:step id="splitStep1">
<batch:job ref="externalJob2">
</batch:step>
</batch:flow>
<batch:flow>
<batch:step id="splitStep2">
<batch:job ref="externalJob3">
</batch:step>
</batch:flow>
<batch:next on="COMPLETE" to="rootJob.step3">
</batch:split>
<batch:step id="rootJob.step3">
<batch:job ref="externalJob4">
</batch:step>
</batch:job>
Ожидание выполнения потока заданий.
1. On Completion of rootJob.step1 execute rootJob.step2.
2. Execute splitJob1 and splitJob2 in parallel.
3. On Completion of rootJob.step2 execute rootJob.step3
Но при развертывании и срабатывании в Jboss. Поток не выполняется должным образом. Шаги запускаются за один раз. Выполнение не ожидает завершения предыдущего шага и запускается мгновенно.
Я подозреваю TaskExecutor. В автономном мы не указываем исполнителя задачи (по умолчанию SyncTaskExecutor), и поток заданий работает нормально. Но при развертывании в Jboss мы используем SimpleAsyncTaskExecutor, так как использование SyncTaskExecutor даже не запускает задание в Jboss.
Что мне здесь не хватает или я делаю что-то не так? Пожалуйста, предложите.