在 Spring 批处理作业中配置多个流时出错

Error when multiple Flows are configured in a Spring Batch Job

我在加载 config.xml 时收到以下错误,当我尝试 运行 具有多个流程的作业时。第一个流已识别,而第二个流未识别。

违规资源:class路径资源[spring/batch/jobs/myAppConfig.xml];嵌套异常是 org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:无法访问元素 [job1Flow2]

每个流程都有一系列步骤,我有各种工作需要各种步骤组合。所以我想到将这些步骤实现为流程,然后重新使用这些流程,这样我的工作就有了它需要的所有步骤。

我的配置文件:

<batch:job id="job1" parent="parentJob">
        <batch:flow parent="MyFlow1" id="job1Flow1"/>
        <batch:flow parent="MyFlow2" id="job1Flow2"/>
</batch:job>

<batch:flow id="MyFlow1">
        <batch:step id="step1" next="step2" parent="parentStep">
            <batch:tasklet ref="bean1"/>
        </batch:step>

        <batch:step id="step2" parent="parentStep">
            <batch:tasklet ref="bean2"/>
        </batch:step>
</batch:flow>

<batch:flow id="MyFlow2">
        <batch:step id="step3" next="step4" parent="parentStep">
            <batch:tasklet ref="bean3"/>
        </batch:step>

        <batch:step id="step4" parent="parentStep">
            <batch:tasklet ref="bean4"/>
        </batch:step>
</batch:flow>

如果我评论第二个流程和 运行 作业,它 运行 就会成功。如果有办法通过流程或任何其他方式完成我的任务,请告诉我。

找到原因了,我在job的flows配置中犯了一个愚蠢的错误。我需要为流添加 next 属性以确定下一步应该做什么。

<batch:job id="job1" parent="parentJob">
    <batch:flow parent="MyFlow1" id="job1Flow1" next="job1Flow2"/>
    <batch:flow parent="MyFlow2" id="job1Flow2"/>
</batch:job>