Ich habe einen komplexen Jobfluss, in dem ich 3 separate Jobs in einen Jobschritt integriert habe, und dann rufe ich diesen Jobschritt von einem Job auf. Es gibt vier dieser JobSteps, die parallel vom aufrufenden Job ausgeführt werden.So übergeben Sie einen einfachen String an einen Spring Batch-Job
Ich muss ihnen einen String als Parameter übergeben.
Etwas vereinfacht Code:
Meine Haupt sieht wie folgt aus:
public static void main(String[] args) {
SpringApplication.run(SomeApplication.class, args);
}
Einer der JobSteps sieht aus wie
@Bean
public JobStep jobStep1(<snip>){
<snip for clarity>
JobStep jobStep = new JobStep() ;
jobStep.setJob(jobs.get(jobName)
.incrementer(new RunIdIncrementer()).listener(listener)
.start(Flow1)
.next(Flow2)
.next(Flow3)
.end().build());
jobStep.setJobRepository(jobRepository);
jobStep.setJobLauncher(jobLauncher);
return jobStep;
}
Die Top-Job, der Rest wie
sieht läuft@Bean
public Job parentJob(<snip>) {
Flow childJobFlow = new FlowBuilder<SimpleFlow>("childJob").start(job1).build();
Flow childJobFlow2 = new FlowBuilder<SimpleFlow>("childJob2").start(job2).build();
FlowBuilder<SimpleFlow> builder = new FlowBuilder<SimpleFlow>("jobFlow");
Flow jobFLow = builder.split(new SimpleAsyncTaskExecutor()).add(childJobFlow,childJobFlow2).build();
return jobs.get("parentJob")
.incrementer(new RunIdIncrementer()).listener(listener)
.start(jobFLow)
.end().build();
}
Ich brauche jeden Jobschritt, um eine andere Zeichenfolge zu erhalten.
Werfen Sie einen Blick auf Partitionierer. Sie können damit Daten an Step übergeben –