Мне интересно, можно ли настроить задание таким образом, чтобы я мог повторять несколько шагов по частям, пока не будут обработаны все данные? Предпосылкой является то, что мне нужно работать с действительно большими данными, и при их обработке существует риск нежелательных прерываний. Чтобы предотвратить перезапуск с нуля снова и снова, я хотел бы сделать несколько разделов данных, которые могут быть использованы для l oop по шагам. Из-за приведенных данных, к сожалению, невозможно использовать функцию перезапускаемой работы с подпружиненной загрузкой для достижения моей цели. Моя исходная база данных состоит из нескольких более или менее свободных связанных таблиц, каждая из которых обрабатывается на своем собственном этапе. Итак, у меня есть что-то вроде:
... omitting job-configuration ...
<batch:step="A" next="B">
<batch:tasklet>
<batch:chunk reader="readerA" writer="writerA" commit-interval="1000" />
</batch:tasklet>
</batch:step>
<batch:step="B" next="C">
<batch:tasklet>
<batch:chunk reader="readerB" writer="writerB" commit-interval="5000" />
</batch:tasklet>
</batch:step>
... some more steps with similar set-up...
Каждый читатель имеет свое собственное SQL -Statement, чтобы получить необходимые данные из source-db и запишет результат в другую таблицу target-db.
Теперь моя идея состоит в том, чтобы адаптировать эти SQL таким образом, чтобы данные были разделены на несколько непересекающихся, но согласованных (*) частей, чтобы я мог повторить обработку, используя шаги по частям, как перед. Может быть, только добавление некоторого «родительского шага» для контроля необходимости завершения l oop.
(*) Под «непересекающимся, но последовательным» я подразумеваю, что хотя данные на разных шагах извлекаются из разных таблиц есть зависимости. Например, выборка данных, которые будут обработаны для шага B, приведет к объединению с таблицей A, выбрав только те наборы, которые были успешно обработаны.
Спасибо за любые советы! / Андреас