【发布时间】:2014-12-31 19:19:19
【问题描述】:
我正在尝试使用 java-config 在 Spring Batch 中配置 Flow, 这个流程基本上必须这样做:
执行一个初始化步骤(在数据库中添加一条记录),
然后执行一个判定器来检查文件是否存在,
2.1。如果文件存在,它将执行加载作业(这是另一个流程,有一堆并行的步骤)
- 执行一个完成步骤(在数据库中添加一条记录),这应该始终运行,即使没有执行 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();
我可以让它工作如下,但它一点也不优雅:
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();
有谁知道在使用 java-config 做出决定后执行步骤的正确方法是什么?
【问题讨论】:
-
在您的第一个示例代码中,您包含了两个“end()”。尝试删除第一个“end()”。
-
.on 的返回是一个TransitionBuilder,我必须在on 之后有一些东西。我还尝试在 on 之后设置一个 Dumb 步骤,但没有成功。
标签: java spring spring-batch spring-java-config