Я прочитал стандарт (и javadoc), но у меня все еще есть некоторые вопросы. Мой вариант использования прост: пакет извлекает данные из внешнего источника и подтверждает данные (это означает, что данные удаляются из внешнего источника после подтверждения). Перед подтверждением данных пакет создает соответствующие выходные данные (in-menory-object), которые должны быть переданы на следующий шаг, ориентированный на порции.
Вопросы:
1) Каков наилучший способ передачи данных между пакетом и этапом фрагмента? Кажется, я могу сделать это, вызвав jobContext#setTransientUserData в пакете, а затем на шаге своего фрагмента я могу получить доступ к этим данным, вызвав jobContext#getTransientUserData.
Я понимаю, что и jobContext, и stepContext реализованы в режиме threadlocal. Что меня здесь беспокоит, так это часть "Transient". Что произойдет, если батчлет завершится успешно, а мой чанк-шаг завершится ошибкой? Будут ли данные «TransientUserData» по-прежнему доступны или они исчезнут, если задание/шаг будет перезапущено? Для моего варианта использования важно, чтобы пакет запускался только один раз. Таким образом, даже если задание или шаг чанка перезапущены, важно, чтобы выходные данные успешно запущенного пакетного релиза были сохранены, в противном случае пакетный релиз должен быть создан еще раз. (Я уже подтвердил данные, и они исчезли, поэтому повторный запуск пакета мне не поможет.)
2) Дополнительный вопрос. В stepContext есть несколько методов: getPersistentUserData и setPersistentUserData. Каково предполагаемое использование этого метода? К чему относится «Постоянная» часть? Эти методы актуальны только для разбиения?
Благодарю вас! / Даниэль