Java Reference
In-Depth Information
form of preprocessing before a component or evaluate the result of a component but also in error
handling, as you see in a bit.
The next section covers the flow of steps. Although all your steps up to this point have been
processed sequentially, that isn't a requirement in Spring Batch. You learn how to perform simple logic
to determine what step to execute next and how to externalize flows for reuse.
Step Flow
A single file line: that is what your jobs have looked like up to this point. You've lined up the steps and
allowed them to execute one after another using the next attribute. However, if that were the only way
you could execute steps, Spring Batch would be very limited. Instead, the authors of the framework
provided a robust collection of options for customizing the flow of your jobs.
To start, let's look at how you can decide what step to execute next or even if you execute a given
step at all. This occurs using Spring Batch's conditional logic.
Conditional Logic
Within a job in Spring Batch, steps are executed in the order you specify using the next attribute of the
step tag. The only requirement is that the first step be configured as the first step in the job. If you want
to execute steps in a different order, it's quite easy: all you need to do is use the next tag. As Listing 4-40
shows, you can use the next tag to direct a job to go from step1 to step2a if things go ok or to step2b if
step1 returns an ExitStatus of FAILED .
Listing 4-40. If / Else Logic in Step Execution
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns=" http://www.springframework.org/schema/batch"
xmlns:beans=" http://www.springframework.org/schema/beans"
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/batch
http://www.springframework.org/schema/batch/spring-batch-2.1.xsd">
<beans:import resource="../launch-context.xml"/>
<beans:bean id="passTasklet"
class="com.apress.springbatch.chapter4.LogicTasklet">
<beans:property name="success" value="true"/>
</beans:bean>
<beans:bean id="successTasklet"
class="com.apress.springbatch.chapter4.MessageTasklet">
<beans:property name="message" value="The step succeeded!"/>
</beans:bean>
<beans:bean id="failTasklet"
class="com.apress.springbatch.chapter4.MessageTasklet">
<beans:property name="message" value="The step failed!"/>
</beans:bean>
 
Search WWH ::




Custom Search