基于作业参数跳过步骤

时间:2015-09-21 11:08:42

标签: spring-batch

我已经阅读了几次弹簧批量文档,并根据作业参数搜索了跳过作业步骤的方法。

例如说我有这份工作

<batch:job id="job" restartable="true"
        xmlns="http://www.springframework.org/schema/batch">
        <batch:step id="step1-partitioned-export-master">
            <batch:partition handler="partitionHandler"
                partitioner="partitioner" />
            <batch:next on="COMPLETED" to="step2-join" />
        </batch:step>
        <batch:step id="step2-join">
            <batch:tasklet>
                <batch:chunk reader="xmlMultiResourceReader" writer="joinXmlItemWriter"
                    commit-interval="1000">
                </batch:chunk>
            </batch:tasklet>
            <batch:next on="COMPLETED" to="step3-zipFile" />
        </batch:step>
        <batch:step id="step3-zipFile">
            <batch:tasklet ref="zipFileTasklet" />
            <!-- <batch:next on="COMPLETED" to="step4-fileCleanUp" /> -->
        </batch:step>
        <!-- <batch:step id="step4-fileCleanUp">
            <batch:tasklet ref="fileCleanUpTasklet" />
        </batch:step> -->
    </batch:job>

如果需要,我希望能够通过在工作参数中指定来跳过步骤4。

我能找到的唯一有点相关的问题是how to select which spring batch job to run based on application argument - spring boot java config

这似乎表明应该创建2个不同的工作上下文,并且在批处理步骤定义之外做出决定。

我已经遵循了这种模式,因为我有一个csv导出以及xml,如例子中所示。我将2个作业拆分为单独的spring-context.xml文件,每个导出类型一个,即使差异不大。

那时我觉得它可能更清晰,因为我找不到替代品的例子。

但是必须创建4个单独的上下文文件才能使每个导出案例包含第4步或者不包括第4步似乎有点疯狂。

我必须在这里遗漏一些东西。

1 个答案:

答案 0 :(得分:0)