如何控制spring批处理中的重复和下一步执行
嗨,我有下面类似xml的执行作业 <batch:job id="Job1" restartable="false" xmlns="http://www.springframework.org/schema/batch"> <step id="step1" next="step2"> <tasklet ref="automate" /> </step> <step id="step2"> <tasklet ref="drive" /> <next on="COMPLETED" to="step3"></next> </step> <step id="step3"> <tasklet ref="generate_file" /> </step> </batch:job>如何控制spring批处理中的重复和下一步执行,spring,spring-batch,Spring,Spring Batch,嗨,我有下面类似xml的执行作业 <batch:job id="Job1" restartable="false" xmlns="http://www.springframework.org/schema/batch"> <step id="step1" next="step2"> <tasklet ref="automate" /> </step> <step id="
为此,我编写了一个tasklet来执行脚本。现在我想知道,若脚本执行失败了三次,那个么下一步将不会执行。但从Tasklet中,我只能返回已完成的,将流程移动到下一步的,以及继续流程的,可继续的。我应该怎么做。这可以通过在该步骤中指定自定义“区块完成策略”并计算失败次数来实现。查看“”和自定义区块完成策略的示例。希望这有帮助 编辑:您可以将失败次数放入步骤执行上下文中,如步骤逻辑中,然后在完成策略类中检索失败次数:
stepExecution.getJobExecution().getExecutionContext().put(“错误计数”,nooferror) 你可以写下自己的决定,决定是下一步还是结束工作。 如果您能够处理故障,那么您也可以处理作业流
<decision id="validationDecision" decider="validationDecider">
<next on="FAILED" to="abcStep" />
<next on="COMPLETE" to="xyzstep" />
</decision>
检查关于查看
SystemCommandTasklet
。它提供了执行脚本的工具以及处理返回的错误的方法。
<bean id="validationDecider" class="com.xyz.StepFlowController" />
public class StepFlowController implements JobExecutionDecider{
@Override
public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) {
FlowExecutionStatus status = null;
try {
if (failure) {
status = new FlowExecutionStatus("FAILED");
}else {
status = new FlowExecutionStatus("COMPLETE");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return status;
}