Я попробовал напрямую связать задание Б с заданием А. в XML, но это не сработало. Я также попробовал сделать это в Java-коде, создав в задании A тасклет, отвечающий за запуск задания B, но это привело к ошибке. Насколько я понимаю, Spring не позволяет запущенному заданию запускать другое задание.
Есть ли способ добиться желаемого поведения, или мне нужно реплицировать все тасклеты из задания B в XML-файле для задания А?
Я пытался сделать что-то вроде этого.
Код: Выделить всё
@Component
public class TaskletInsertedIntoJobA implements Tasklet {
private final JobLauncher jobLauncher;
private final Job secondaryJob;
public TaskletInsertedIntoJobA(
JobLauncher jobLauncher, @Qualifier("jobB") Job secondaryJob) {
this.jobLauncher = jobLauncher;
this.secondaryJob = secondaryJob;
}
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
JobParameters jobParameters = new JobParametersBuilder();
// Logic for setting job parameters
// Run job B
JobExecution jobExecution = jobLauncher.run(secondaryJob, jobParameters);
if (jobExecution.getStatus().isUnsuccessful()) {
throw new RuntimeException("Secondary job failed!");
}
return RepeatStatus.FINISHED;
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... nother-job