当所有步骤完成时,spring批处理作业状态失败

smtd7mpg  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(204)

我有一个spring批处理作业,它使用flow:

Flow productFlow = new FlowBuilder<Flow>("productFlow")
                .start(productFlow)
                .next(new MyDecider()).on("YES").to(anotherFlow)
                .build();

在我开始使用decider检查jobsecution中jobparameter的某个值来决定是否运行下一个流之后,我不再作为jobsecution中的整体作业状态来完成。结果失败了。
但是,步骤执行表中的每个步骤都已完成,没有一个失败。
我错过了什么把戏吗?
我的决定是这样的:

public class AnotherFlowDecider implements JobExecutionDecider {

    @Override
    public AnotherFlowDecider decide(final JobExecution jobExecution, final StepExecution stepExecution) {

        final JobParameters jobParameters = jobExecution.getJobParameters();

        final String name = jobParameters.getString("name");

        if (nonNull(name)) {

            switch (name) {
                case "A":
                    return new FlowExecutionStatus("YES");
                case "B":
                default:
                    return new FlowExecutionStatus("NO");
            }

        }

        throw new MyCustomException(FAULT, "nameis not provided as a JobParameter");
    }
}

在调试模式下,我可以看到

2020-12-11 11:10:58.145 DEBUG [cTaskExecutor-4] o.s.b.c.j.f.s.SimpleFlow [eId=, rId=] -- Completed state=productFlow.stageProduct with status=COMPLETED
2020-12-11 11:10:58.146 DEBUG [cTaskExecutor-4] o.s.b.c.j.f.s.SimpleFlow [eId=, rId=] -- Handling state=productFlow.decision0
2020-12-11 11:10:58.146 DEBUG [cTaskExecutor-4] o.s.b.c.j.f.s.SimpleFlow [eId=, rId=] -- Completed state=productFlow.decision0 with status=NO
2020-12-11 11:10:58.146 DEBUG [cTaskExecutor-4] o.s.b.c.j.f.s.SimpleFlow [eId=, rId=] -- Handling state=productFlow.FAILED

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题