spring batch - 如何执行purge tasklet

时间:2014-09-29 08:05:53

标签: spring spring-batch

我编写了一个简单的spring批处理tasklet,它调用dao方法,然后进行一些删除操作。但是我不确定我应该做些什么来打电话给这份工作。

public class RemoveSpringBatchHistoryTasklet implements Tasklet {

    @Autowired
    private SpringBatchDao springBatchDao;

    public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
            throws Exception {
        contribution.incrementWriteCount(springBatchDao.purge());
        return RepeatStatus.FINISHED;
    }

}

到目前为止,为了执行我的弹簧批处理作业,我正在使用具有类似设置的石英触发器。每个作业都有自己的xml文件,它有一个读取和一个编写器。

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="jobDetails">
           <list>
              <ref bean="dailyTranCountJobDetail" />
           </list>
        </property>
        <property name="triggers">
           <list>
              <ref bean="dailyTranCountCronTrigger" />
           </list>
        </property>
    </bean>

    <bean id="dailyTranCountCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="dailyTranCountJobDetail" />
        <property name="cronExpression" value="#{batchProps['cron.dailyTranCounts']}" />
    </bean>

    <bean id="dailyTranCountJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.myer.reporting.batch.JobLauncherDetails" />
        <property name="group" value="quartz-batch" />
        <property name="jobDataAsMap">
            <map>
                <entry key="jobName" value="job-daily-tran-counts" />
                <entry key="jobLocator" value-ref="jobRegistry" />
                <entry key="jobLauncher" value-ref="jobLauncher" />
            </map>
        </property>
    </bean>

然后这是一个带有读者和作者的作业文件本身的例子。

<job id="job-daily-tran-counts" xmlns="http://www.springframework.org/schema/batch">
    <step id="job-daily-tran-counts-step1">
        <tasklet transaction-manager="custDbTransactionManager">
            <chunk 
                reader="dailyTranCountJdbcCursorItemReader" 
                writer="dailyTranCountItemWriter" 
                commit-interval="1000" />
        </tasklet>
    </step>
</job>

<bean id="dailyTranCountJdbcCursorItemReader"
    class="com.myer.reporting.dao.itemreader.DailyTranCountJdbcCursorItemReader"
    scope="step"
    parent="abstractEposJdbcDao">
    <property name="rowMapper">
        <bean class="com.myer.reporting.dao.mapper.DailyTranCountMapper" />
    </property>
</bean>

<bean id="dailyTranCountItemWriter" 
    class="com.myer.reporting.dao.itemwriter.DailyTranCountItemWriter" 
    parent="abstractCustDbJdbcDao"/>

显然,对于这项新工作,没有读者或作家。那么对我来说,执行新的tasklet最好/正确的方法是什么呢?

感谢

0 个答案:

没有答案