根据作业参数跳过步骤
Skip step based on job parameter
我已经通读了几次 spring 批处理文档并搜索了一种基于作业参数跳过作业步骤的方法。
比如说我有这份工作
<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 似乎有点疯狂。
我一定是漏掉了什么。
你不能用决定器来做吗? http://docs.spring.io/spring-batch/reference/html/configureStep.html(第 5.3.4 章程序化流程决策)
编辑:link 到更新的 url
https://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#programmaticFlowDecisions
我已经通读了几次 spring 批处理文档并搜索了一种基于作业参数跳过作业步骤的方法。
比如说我有这份工作
<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 似乎有点疯狂。
我一定是漏掉了什么。
你不能用决定器来做吗? http://docs.spring.io/spring-batch/reference/html/configureStep.html(第 5.3.4 章程序化流程决策)
编辑:link 到更新的 url https://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#programmaticFlowDecisions