Code:
<beans:import resource="classpath:plugin/sis/client/plugin.xml"/>
<beans:bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<beans:property name="jobRepository" ref="jobRepository" />
</beans:bean>
<beans:bean id="jobRepository"
class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="transactionManager" ref="transactionManager" />
</beans:bean>
<job id="UOSBatchJob">
<step id="step-1" next="step0">
<tasklet ref="newExtractCheck" />
</step>
<step id="step0">
<tasklet ref="loadAcademicSessions" />
<next on="FAILED" to="step9" />
<next on="*" to="step0.5" />
</step>
<step id="step0.5">
<tasklet ref="templateBucketTasklet" />
<next on="*" to="step1" />
</step>
<step id="step1" next="step2">
<tasklet ref="updateCoursesTasklet" />
</step>
<!--
In step1, the course update, some learner might be moved from a closing
section into an open one. If this happens and if some of those learners
have other changes in the extract (such as status change, session change, etc)
there might be some mishandling of the simultaneous changes.
For this reason, go ahead and deal with those potential Vista registration
at this point, before the extract is read
-->
<step id="step2" next="step3">
<tasklet>
<chunk reader="registerReader" writer="registerWriter" processor="preRegisterProcessor" commit-interval="1" skip-limit="10">
<skippable-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</skippable-exception-classes>
</chunk>
<no-rollback-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</no-rollback-exception-classes>
</tasklet>
</step>
<step id="step3" next="step3.5">
<tasklet>
<chunk reader="registerReader" writer="registerWriter" processor="registerProcessor" commit-interval="1" skip-limit="10">
<skippable-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</skippable-exception-classes>
</chunk>
<no-rollback-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</no-rollback-exception-classes>
</tasklet>
</step>
<step id="step3.5" next="step4">
<tasklet>
<chunk reader="extractReader" writer="extractWriter" processor="multipleProgramsProcessor" commit-interval="1" skip-limit="10" >
<skippable-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
<include class="org.springframework.batch.item.file.FlatFileParseException"/>
</skippable-exception-classes>
</chunk>
<no-rollback-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</no-rollback-exception-classes>
</tasklet>
</step>
<step id="step4" next="step5">
<tasklet>
<chunk reader="extractReader" writer="extractWriter" processor="extractProcessor" commit-interval="1" skip-limit="10" >
<skippable-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
<include class="org.springframework.batch.item.file.FlatFileParseException"/>
</skippable-exception-classes>
</chunk>
<no-rollback-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</no-rollback-exception-classes>
<listeners>
<listener ref="extractListener"/>
</listeners>
</tasklet>
</step>
<step id="step5" next="step6">
<tasklet ref="sectionPopulationCheck" />
</step>
<step id="step6" next="step7">
<tasklet>
<chunk reader="registerReader" writer="registerWriter" processor="preRegisterProcessor" commit-interval="1" skip-limit="10">
<skippable-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</skippable-exception-classes>
</chunk>
<no-rollback-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</no-rollback-exception-classes>
</tasklet>
</step>
<step id="step7" next="step8">
<tasklet>
<chunk reader="registerReader" writer="registerWriter" processor="registerProcessor" commit-interval="1" skip-limit="10">
<skippable-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</skippable-exception-classes>
</chunk>
<no-rollback-exception-classes>
<!-- To skip all the exceptions -->
<include class="java.lang.Exception"/>
<include class="java.lang.Throwable"/>
</no-rollback-exception-classes>
</tasklet>
</step>
<step id="step8" next="step9">
<tasklet ref="clearTemplateChangeTasklet"/>
</step>
<step id="step9">
<tasklet ref="reportTasklet"/>
</step>
</job>