Я только начал работать с Spring Batch. Я использую Spring Batch (4.2.2) + Spring Boot (2.3.0) и изучаю, как разработать свою проблему, в которой у меня есть несколько исходных файлов для загрузки в несколько таблиц БД, с каждым данными загрузка с разной частотой.
Некоторые данные должны загружаться трижды в день, некоторые - ежедневно, некоторые - ежеквартально и т. д. c. Кроме того, между ними существует зависимость, и при их запуске необходимо соблюдать определенную последовательность.
Ниже приведен сценарий, отображающий реальную проблему (Источник -> Таблица БД - Частота загрузки):
- Status.csv -> Таблица STATUS_CODES - ежегодно (1 января каждого года в 01:00).
- Products.csv -> Таблица PRODUCTS - Ежеквартально (1 января, 1 апреля, 1 июля и т. Д.) c. В 01:00)
- Employee.csv -> таблица EMP - ежедневно (01:00).
- Franchises.csv -> таблица FRANCHISE - еженедельно (каждую пятницу, 01:00)
- Used_Products_Sold.csv -> Таблица SALES - ежедневно (01:00).
- Products_Sold.csv -> Таблица SALES - ежедневно (01:00).
- Offers_Activated.csv - > Таблица SERV_ACTV - трижды в день (1:00, 9:00, 17:00).
- Таблица SERV_ACTV -> Таблица SALES - трижды в день (1:00, 9:00, 17:00).
Прямо сейчас я инкапсулировал каждый из вышеперечисленных потоков в отдельные шаги, такие как loadStatusDataStep (# 1), loadProductsDataStep (# 2), loadEmployeeDataStep (# 3) et * 1 058 *. Я пытаюсь выяснить, можно ли запланировать каждый из этих шагов?
Итак, скажем, когда задание запускается 1 января 2021 года (пятница) в 1 час ночи, ниже должна быть последовательность шагов:
Шаги 1, 2 параллельно> Шаги 3, 4 параллельно> Шаги 5, 6 параллельно> Шаг 7> Шаг 8
Работа выполняется 1 января 2021 года (пятница) в 9:00 должны выполняться только шаги 7 и 8 (потому что другие уже выполнялись в этот день), а последовательность шагов будет следующей:
Шаг 7> Шаг 8
Работа выполняется 2 января 2021 года (суббота) в 01:00, шаги 1, 2 и 4 не должны выполняться, и последовательность шагов будет следующей:
Шаг 3> Шаги 5, 6 параллельно> Шаг 7> Шаг 8
Может ли это быть выполнено с помощью одного задания с несколькими шагами? Если да, то как мы можем определить частоту для каждого шага?
Или это должно быть сделано путем определения отдельного задания для каждого (от 1 до 8), и в этом случае, как определить последовательность между ними Вакансии?
Был бы признателен за любую помощь о том, как подойти / разработать его.