Я работаю над настройкой задания, которое обрабатывает следующие структуры данных:
class A { long id; List<B> bList; }
class B { long id; list<C> cList; }
class C { long id; }
На данный момент я настроил задание с одним шагом, содержащим:
ItemReader<C>
: прочитайте A & B и объедините все их C в список. Возвращайте по одному
ItemProcessor<C, C>
ItemWriter<Identifiable>
(реализует long getId();
SkipListener<Identifiable, Identifiable>
Задание обрабатывает элементы C и записывает состояние обработки каждого элемента в таблицу базы данных.
Тем не менее, Я хотел бы обработать элементы как это:
- Для каждого А, обработайте его Б. Напишите в таблицу, что A - IN_PROGRESS
- Для каждого B, обработайте его. Напишите в таблицу, что B - IN_PROGRESS
- Обработать каждый C и записать в таблицу, что C - IN_PROGRESS-> COMPLETED / FAILURE
- Все C обрабатываются. Если все ЗАВЕРШЕНО, напишите в таблицу, что B ЗАВЕРШЕНО
- Все Б обрабатываются. Если все ЗАВЕРШЕНО, запишите в таблицу, что А завершено.
Как я собираюсь сделать это в Spring Batch?
Заранее спасибо.