我的软件是为许多弹簧批量作业提供内容。作业的输出部分是下一个作业的输入。即使链中的一个或多个作业已成功完成,也可能会重新启动整个过程(整个作业链)。在这种情况下,当我尝试使用相同的参数再次运行其中一个作业时,我得到了一个JobInstanceAlreadyCompletedException按预期方式。我可以跳过并继续下一个工作,但我需要访问已完成实例的上下文,以获得其步骤产生的输出并将它们传递给下一个工作。
根据JobExplorer API,如果您拥有已完成实例的executionId,则可以使用此功能。我无法从JobInstanceAlreadyCompletedException中获取它,并且它看起来没有用于从已使用的参数列表中获取它的API。你知道一种方法来获得这个executionId参数吗?或以任何方式访问已完成的实例作业上下文?
答案 0 :(得分:0)
为什么不将所有这些工作放在一个主要工作中并使用JobSteps来整合工作?这样,已经完成的子作业将被视为已完成的步骤,不会再次启动。此外,即使您重新启动,所有信息都可在作业/步骤上下文中找到?
另一种方法是将所有需要的参数和信息保存到文件中,并使用它来启动下一个作业,而不是依赖于Jobexecution信息。您的最后一步可能只是一个tasklet,它会写一个适当的属性文件。