Dan*_*ehl 5 java spring spring-batch spring-java-config
我正在尝试使用java-config在spring批处理中配置Flow,这个流程基本上必须这样做:
执行init步骤(在数据库中添加记录),
然后执行一个decider来检查文件是否存在,
2.1.如果文件存在,它将执行加载作业(这是一个并行的一堆步骤的另一个流程)
我尝试进行此配置,但完成步骤永远不会运行:
Flow flow = new FlowBuilder<SimpleFlow>("commonFlow")
.start(stepBuilderFactory.get("initStep").tasklet(initTasklet).build())
.next(decider)
.on(FlowExecutionStatus.COMPLETED.getName())
.to(splitFlow)
.from(decider).on("*")
.end()
.next(stepBuilderFactory.get("finishStep").tasklet(finishTasklet).build())
.end();
Run Code Online (Sandbox Code Playgroud)
我可以让它按照下面的方式工作,但它根本不优雅:
Step finishStep = stepBuilderFactory.get("finishStep").tasklet(finishTasklet).build();
Flow flow = new FlowBuilder<SimpleFlow>("commonFlow")
.start(stepBuilderFactory.get("initStep").tasklet(initTasklet).build())
.next(decider)
.on(FlowExecutionStatus.COMPLETED.getName())
.to(splitFlow)
.next(finishStep)
.from(decider).on("*")
.to(finishStep)
.end();
Run Code Online (Sandbox Code Playgroud)
有人知道在使用java-config做出决定后执行步骤的正确方法是什么?
听起来这件事变得比实际需要的复杂得多。您不需要配置流程或决策程序。这是一项非常简单的进出工作。
最简单的选择是使用 Spring Integration 来检测文件的存在并触发作业。
下一个最简单的选项是使用quartz 或CRON 作业检查文件并启动批处理作业。
最后但并非最不重要的一点是,您可以运行作业,如果 ItemReader 找不到文件,只需吞掉异常即可。或者设置一个 FileItemReader 侦听器来检查其 before 方法上的文件。
| 归档时间: |
|
| 查看次数: |
2048 次 |
| 最近记录: |