Возможно ли динамическое конфигурирование Job
в spring-batch
?Динамически настраивать задание в весенней партии
Вот что я хочу сделать. Я создал несколько различных ItemReader
, ItemWriter
, как показано ниже:
- FlatFileItemReader
- DBItemReader
- FlatFileItemWriter
- DBItemWriter
- .....
- XMLItemWriter
Я хочу для того, чтобы nd динамически сопоставлять их при создании пакетного задания. Например, предположим, что мне нужно задание с двумя шагами. Первый этап содержит Tasklet
для предварительной обработки . Второй шаг будет иметь Tasklet
для обработки данных на основе фрагмента данных с помощью моего чтения/записи .... Что-то вроде этого:
// define job parameters
JobParametersBuilder parameters = new JobParametersBuilder();
// create two steps
TaskletStep step1 = new TaskletStep();
TaskletStep step2 = new TaskletStep();
step1.setName("PreProcessingStep");
step2.setName("ChunkReadWriteStep");
// create two TaskLets
Tasklet tasklet1 = new PreProcessingTasklet();
Tasklet tasklet2; <------ HOW DO I ATTACH MY reader/writer IN THIS TASKLET??
// attach the TaskLet to the step
step1.setTasklet(tasklet1);
step2.setTasklet(tasklet2);
// attach the steps to the job
SimpleJob job = new SimpleJob("MyBatchJob");
job.addStep(step1);
job.addStep(step2);
jobLauncher.run(job, parameters.toJobParameters());
В XML, я могу сделать это, как показано ниже:
<job id="MyBatchJob">
<step id="preprocessing" next="readWriteStep">
<tasklet ref="PreProcessingTasklet"/>
</step>
<step id="readWriteStep">
<tasklet>
<chunk reader="FlatFileItemReader" writer="DBItemWriter"/>
</tasklet>
</step>
</job>
Но как делать это программно, как указано выше?
ОК ... прежде чем я переключу свой фокус на конфигурацию на основе Java .. может ли эта проблема также быть решена путем параметризации чтения и записи в XML? Если да, будет ли какой-нибудь недостаток? – hashbrown
Я не верю, что мы поддерживаем возможность параметризации этих полей. Как вы говорите, насколько динамичны они вам нужны? Это может иметь смысл определить набор шагов и просто выбрать, какой из них выполнить во время выполнения. –
Извините за то, что вы новичок, но из набора заранее определенных шагов в XML, как я могу приложить один соответствующий «шаг» для выполнения во время выполнения? – hashbrown