Мне дали задание вызывать пакетное задание один за другим. Каждое задание зависит от другого. Первый результат работы должен выполнить последующую программу работы.
Я искал, как передать данные после выполнения задания. Я обнаружил, что этот ExecutionContextPromotionListener пригодится.
1) Я добавил компонент для «ExecutionContextPromotionListener», как показано ниже
@Bean
public ExecutionContextPromotionListener promotionListener()
{
ExecutionContextPromotionListener listener = new ExecutionContextPromotionListener();
listener.setKeys( new String[] { "entityRef" } );
return listener;
}
2) Затем я прикрепил одного из слушателей к своим ступеням
Step step = builder.faultTolerant()
.skipPolicy( policy )
.listener( writer )
.listener( promotionListener() )
.listener( skiplistener )
.stream( skiplistener )
.build();
3) Я добавил stepExecution в качестве ссылки в моей реализации шага Writer и заполнил его до шага
@BeforeStep
public void saveStepExecution( StepExecution stepExecution )
{
this.stepExecution = stepExecution;
}
4) в конце моего шага писателя я заполнил значения в пошаговом исполнении в виде клавиш, как показано ниже
lStepContext.put( "entityRef", lMap );
5) После выполнения задания я получил значения из
lExecution.getExecutionContext()
и заполняется как ответ на задание.
6) из объекта ответа задания я получу значения и заполню необходимые значения в остальных заданиях.
Приведенный выше код предназначен для продвижения данных из шагов в ExecutionContext с использованием ExecutionContextPromotionListener.
Это можно сделать за любые шаги.