2

I've read through the spring batch docs a few times and searched for a way to skip a job step based on job parameters.

For example say I have this job

<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>

I want to be able to skip step4 if desired by specifying in the job paramaters.

The only somewhat related question I could find was how to select which spring batch job to run based on application argument - spring boot java config

Which seems to indicate that 2 distinct job contexts should be created and the decision made outside the batch step definition.

I have already followed this pattern, since I had a csv export as well as xml as in the example. I split the 2 jobs into to separate spring-context.xml files one for each export type, even though the there where not many differences.

At that point I though it was perhaps cleaner since I could find no examples of alternatives.

But having to create 4 separate context files just to make it possible to include step 4 or not for each export case seems a bit crazy.

I must be missing something here.

Community
  • 1
  • 1
justify
  • 1,036
  • 2
  • 14
  • 26

1 Answers1

1

Can't you do that with a decider? http://docs.spring.io/spring-batch/reference/html/configureStep.html (chapter 5.3.4 Programmatic Flow Decisions)

EDIT: link to the updated url https://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#programmaticFlowDecisions

Stultuske
  • 9,296
  • 1
  • 25
  • 37
Hansjoerg Wingeier
  • 4,274
  • 4
  • 17
  • 25