У меня есть случай, когда у меня есть пользовательский ввод, который можно назвать RunningMode. Вход может иметь 3 возможных состояния: STATE1, STATE2, STATE1_AND_STATE2. Логика для реализации следующая, если STATE1 установлен, тогда stepA должен быть выполнен, если STATE2 установлен, тогда должен быть выполнен stepB, и, наконец, если STATE1_AND_STATE2 установлен, тогда я должен запускаться параллельно stepA и stepB.Весенний пакетный ресивер без дублирования
Я знаю, как решить эту проблему в уродливом виде, как это:
<batch:decision id="makeWorkFlowDecision" decider="myDecider">
<batch:next on="STATE1" to="stepA" />
<batch:next on="STATE2" to="stepB" />
<batch:next on="STATE1_AND_STATE2" to="stepC" />
</batch:decision>
<batch:split id="stepA" task-executor="taskExecutor">
<!-- content of stepA -->
</batch:split>
<batch:split id="stepB" task-executor="taskExecutor">
<!-- content of stepB -->
</batch:split>
<batch:split id="stepC" task-executor="taskExecutor">
<!-- content of stepA -->
<!-- content of stepB -->
</batch:split>
Как вы можете видеть, что есть дублирование в stepC. Я повторяю содержимое stepA и stepB. Плюс, насколько я знаю, в stepC stepA и stepB не будут работать параллельно. Содержание ступеней A и stepB состоит из 2 блоков потока, каждый из которых я определяю шаги. Есть ли способ иметь условное следующее на stepA?
версия Spring Batch, который я использую не позволяет определять абстрактные потоки, тем не менее спасибо за пример, который я достичь подобных результатов с шагами, вложенных в блоках потока , – Luke