【发布时间】:2013-11-03 14:46:42
【问题描述】:
要求:
Manager 不希望作业实例和作业执行表中有多个作业实例。尽管多次处决没问题,但他只想要一个实例。
含义: 作业不能以 COMPLETED 批处理状态结束,因为这样的实例永远无法重新启动。
我的方法: 我尝试以 STOPPED 批处理状态结束作业,以便下一次运行该作业运行之前运行的相同实例。 (请注意,如果作业失败,则没有问题,因为可以重新运行失败的实例)。我计划对作业没有参数,以便每次运行时创建的默认实例与数据库中已经存在的实例(作业实例表)相匹配。这样一来,我就不用担心在重新启动时将任何参数传递给作业,因为只有一个实例并且它没有区分参数。
问题: 如果所有步骤都完成并且所有这些步骤的 BATCH_STEP_EXECUTION 都更新为 COMPLTED,那么即使我设法让作业执行以 STOPPED 状态结束,我也无法再重新运行同一个作业实例。我收到消息:所有步骤都已完成或没有为此作业配置步骤。
我知道消息的含义,但我试图让所有步骤都以完成以外的状态结束,这样每当我重新运行我的单个实例时,这些步骤也可以重新运行,而不是上面的那个信息。 我知道可以使用步骤执行状态来导出作业执行状态。例如,如果一个步骤以 STOPPED 结束,您可以使用该状态来指示作业以 STOPPED 以及通过 、 或 元素结束。这不是我要寻找的,因为我已经知道如何使用它们,除非有办法做到这一点,这样它们会影响 BATCH_STEP_EXECUTION 表中更新的内容。
在该表中,如果步骤成功,我希望步骤以 STOPPED 结束,而不是以 COMPLETED 结束。有任何想法吗?有没有可能一开始就做到这一点?
【问题讨论】:
标签: spring-batch