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();
}