I create a sample config file
Code:
<!-- BATCH -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="myDs"></property>
</bean>
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
</bean>
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean>
<job id="exportJob" job-repository="jobRepository" xmlns="http://www.springframework.org/schema/batch" >
<step id="step1">
<tasklet>
<chunk reader="myReader1" writer="myWriter1" processor="myProcessor1" commit-interval="100" />
</tasklet>
<next on="*" to="step2" />
</step>
<step id="step2">
<tasklet>
<chunk reader="myReader2" writer="myWriter2" processor="myProcessor2" commit-interval="100" />
</tasklet>
<next on="*" to="step3" />
</step>
<step id="step3">
<tasklet>
<chunk reader="myReader3" writer="myWriter3" processor="myProcessor3" commit-interval="100" />
</tasklet>
<next on="*" to="markAsProcessed" />
</step>
<step id="markAsProcessed">
<tasklet ref="markAsProcessedTasklet"/>
<next on="*" to="historyTasklet" />
</step>
<step id="history">
<tasklet ref="historyTasklet" />
<next on="*" to="ftpManagement" />
</step>
<step id="ftpManagement" >
<tasklet ref="ftpTasklet" />
</step>
</job>
It seems it open and close a transaction on each step. But i want one transaction for step1, step2, step3, "markAsProcessed" and history"
If i have errors on step "history", how to rollback the step "markAsProcessed" and step2 ?
Please need help.