我已经将一些夜间预定的工作转换成一个接一个的工作岗位。这在Spring Batch中是完全合法的,因为可以通过引用另一个作业来定义Step。
问题是某些子作业是由Quartz按计划运行的,并且它们是不可重新启动的。这意味着有时候“作业的工作”失败了,因为它试图启动已经运行的作业。这产生了深受喜爱的:
JobRestartException: JobInstance already exists and is not restartable
我的问题是,这是否是一种告诉Spring Batch在引用的作业可用然后运行它之前会哭的方法。这是因为夜间工作流程需要A-> B-> C.我知道我可以编写自己的自定义作业启动器来轮询JobRepository以完成违规子作业的ExecutionStatus,但我希望SB已经考虑过这个常见问题。
更新,为那些询问工作原理的人提供的工作职位示例。 ref 指向SimpleJob bean的作业。这种方法效果很好,但是当子作业已经运行时,如上所述的错误。
<!-- Example Job of Jobs -->
<job id="jobOfJobs">
<step id="step1">
<job ref="job1" />
</step>
<step id="step2">
<job ref="job2" />
</step>
</job>