Java 读卡器只运行一次
我有一个批处理作业,其中我有一个步骤,用于获取和存储国家列表中每个国家的信息。我使用了分区作业,但被要求不要使用它。我们是否可以使用任何方法来实现同样的行为 我的作业配置如下Java 读卡器只运行一次,java,spring,spring-batch,batch-processing,Java,Spring,Spring Batch,Batch Processing,我有一个批处理作业,其中我有一个步骤,用于获取和存储国家列表中每个国家的信息。我使用了分区作业,但被要求不要使用它。我们是否可以使用任何方法来实现同样的行为 我的作业配置如下 private Job batchJob() { return jobBuilderFactory.get(jobName) .incrementer(new RunIdIncrementer()) .start(jobFlow())
private Job batchJob() {
return jobBuilderFactory.get(jobName)
.incrementer(new RunIdIncrementer())
.start(jobFlow())
.end()
.build();
}
private JobExecutionDecider jobExecutionDecider(CountryConfig countryConfig) {
return new JobExecutionDecider() {
@Override
public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) {
System.out.println("JED: status: "+ (countryConfig.hasNextCountry() ? new FlowExecutionStatus("CONTINUE") : new FlowExecutionStatus("FINISHED")));
return countryConfig.hasNextCountry() ? new FlowExecutionStatus("CONTINUE") : new FlowExecutionStatus("FINISHED");
}
};
}
private Flow jobFlow() {
SimpleFlow simpleFlow = new SimpleFlow(jobName + "_flow");
List<StateTransition> transitions = new LinkedList<>();
transitions.add(StateTransition.createStateTransition(new StepState(step()), "decision"));
transitions.add(StateTransition.createStateTransition(new DecisionState(jobExecutionDecider(countryConfig()), "decision"), "CONTINUE", stepName ));
transitions.add(StateTransition.createEndStateTransition(new DecisionState(jobExecutionDecider(countryConfig()), "decision"), "*"));
simpleFlow.setStateTransitions(transitions);
return simpleFlow;
}
protected Step step() {
return stepBuilderFactory.get(stepName)
.allowStartIfComplete(true)
.<SiloNavTreeReaderResponse, SiloNavTreeProcessorResponse>chunk(1)
.reader(reader())
.processor(processor())
.writer(writer())
.build();
}
private Job batchJob(){
返回jobBuilderFactory.get(jobName)
.incrementer(新的RunIdIncrementer())
.start(作业流())
(完)
.build();
}
私有作业执行决策器作业执行决策器(CountryConfig CountryConfig){
返回新的JobExecutionDecider(){
@凌驾
public FlowExecutionStatus Decision(作业执行作业执行,步骤执行步骤执行){
System.out.println(“JED:status:”+(countryConfig.hasNextCountry()?新流程执行状态(“CONTINUE”):新流程执行状态(“FINISHED”);
return countryConfig.hasNextCountry()?新流程执行状态(“继续”):新流程执行状态(“完成”);
}
};
}
私有流jobFlow(){
SimpleFlow SimpleFlow=新SimpleFlow(作业名+“_流”);
列表转换=新建LinkedList();
添加(stateTransformation.createStateTransformation(新的StepState(step()),“decision”));
添加(stateTransformation.createStateTransformation(新决策状态(jobExecutionDecider(countryConfig()),“决策”),“继续”,步骤名));
添加(stateTransformation.createEndStateTransformation(新的决策状态(jobExecutionDecider(countryConfig()),“决策”),“*”);
simpleFlow.SetStateTransformations(转换);
返回simpleFlow;
}
受保护的步骤(){
返回stepBuilderFactory.get(stepName)
.allowStartIfComplete(真)
.chunk(1)
.reader(reader())
.processor(处理器())
.writer(writer())
.build();
}