spring batch之一 域模型

原文请参考spring batch reference 第三章

   

spring  batch原型



spring batch 执行模型


3.1. Job

  Job 没有什么特别的含义,一个工作的代表,主要是有一个名字. 它是一个step的容器, 包含了一系列的step,形成一个流程。默认情况下job里的step按照定义的顺序执行.

<job id="footballJob">
    <step id="playerload" next="gameLoad"/>
    <step id="gameLoad" next="playerSummarization"/>
    <step id="playerSummarization"/>
</job>

3.1.1. JobInstance

  在启动一个job后就会创建一个JobInstance,主要记录了job的名称和一个唯一的实例ID。

3.1.2. JobParameters

      job 参数, job启动的时候需要附带job参数,可以在后续的step中引用这些参数。 job参数决定了一个job 实例.  相同的job参数代表同一个job 实例. 同一个job实例在结束后一般是不能重启的.所以一般启动job的时候都将当前的时间作为一个job 参数.

3.1.3. JobExecution

  job 执行的信息.  包括job的状体,开始时间. 结束时间,创建时间,最后更新时间等信息.

Table 3.2. BATCH_JOB_INSTANCE

JOB_INST_IDJOB_NAME
1EndOfDayJob

Table 3.3. BATCH_JOB_EXECUTION_PARAMS

JOB_EXECUTION_IDTYPE_CDKEY_NAMEDATE_VALIDENTIFYING
1DATEschedule.Date2008-01-01TRUE

Table 3.4. BATCH_JOB_EXECUTION

JOB_EXEC_IDJOB_INST_IDSTART_TIMEEND_TIMESTATUS
112008-01-01 21:002008-01-01 21:30FAILED


Table 3.5. BATCH_JOB_INSTANCE

JOB_INST_IDJOB_NAME
1EndOfDayJob
2EndOfDayJob

Table 3.6. BATCH_JOB_EXECUTION_PARAMS

JOB_EXECUTION_IDTYPE_CDKEY_NAMEDATE_VALIDENTIFYING
1DATEschedule.Date2008-01-01 00:00:00TRUE
2DATEschedule.Date2008-01-01 00:00:00TRUE
3DATEschedule.Date2008-01-02 00:00:00TRUE

Table 3.7. BATCH_JOB_EXECUTION

JOB_EXEC_IDJOB_INST_IDSTART_TIMEEND_TIMESTATUS
112008-01-01 21:002008-01-01 21:30FAILED
212008-01-02 21:002008-01-02 21:30COMPLETED
322008-01-02 21:312008-01-02 22:29COMPLETED


3.2. Step

   step是job里边具体做事的地方. step 包含一个tasklet. tasklet 可以是一个具体的java类,实现tasklet 接口. 也可以是一个chunk tasklet. chunk tasklet是一个tasklet末班类,包含了三个组件. item reader, item processor, item writer.. I

3.2.1. StepExecution

  当一个step 被调用执行的时候就会创建一个step execution. step execution 主要包含了step的状体,开始时间,结束时间,退出状体等. 

3.3. ExecutionContext

    execution context 类似一个map 和 job parameters, 是在job的执行过程中传递上下文参数的。 ExecutionContext主要包括Job execution context 和 step execution context. job execution context类似与job parameter 在整个job中传递参数,后续的step可以引用这些参数.  step execution context主要用在spring batch partition等高级应用中传递step信息. 我们可以在job的第一个step中从database中读取job的配置参数,然后保存在job execution context. 也可以在某个step把一些参数放入job execution context 供后续step使用.

Table 3.9. BATCH_JOB_INSTANCE

JOB_INST_IDJOB_NAME
1EndOfDayJob


Table 3.10. BATCH_JOB_PARAMS

JOB_INST_IDTYPE_CDKEY_NAMEDATE_VAL
1DATEschedule.Date2008-01-01


Table 3.11. BATCH_JOB_EXECUTION

JOB_EXEC_IDJOB_INST_IDSTART_TIMEEND_TIMESTATUS
112008-01-01 21:002008-01-01 21:30FAILED


Table 3.12. BATCH_STEP_EXECUTION

STEP_EXEC_IDJOB_EXEC_IDSTEP_NAMESTART_TIMEEND_TIMESTATUS
11loadDate2008-01-01 21:002008-01-01 21:30FAILED


Table 3.13. BATCH_STEP_EXECUTION_CONTEXT

STEP_EXEC_IDSHORT_CONTEXT
1{piece.count=40321}


ExecutionContext ecStep = stepExecution.getExecutionContext();
ExecutionContext ecJob = jobExecution.getExecutionContext();

3.4. JobRepository

spring job repository 顾名思义,用来创建,保存job执行信息的地方,可以是内存,也可以是database。 在实际应用中经常配一个datasource.

3.5. JobLauncher

JobLauncher 启动一个job, 附带JobParameters: 经常引用一个job repository. 

public interface JobLauncher {

    public JobExecution run(Job job, JobParameters jobParameters) 
                throws JobExecutionAlreadyRunningException, JobRestartException;
}

3.6. Item Reader

ItemReader 用来从文件或者database中读取一条记录。

3.7. Item Writer

将一条或者多条记录写入文件或者database.

3.8. Item Processor

处理item reader 读出来的数据,

3.9. Batch Namespace

<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.xsd
           http://www.springframework.org/schema/batch 
           http://www.springframework.org/schema/batch/spring-batch-2.2.xsd">

    <job id="ioSampleJob">
        <step id="step1">
            <tasklet>
                <chunk reader="itemReader" writer="itemWriter" commit-interval="2"/>
            </tasklet>
        </step>
    </job>

</beans:beans>
 
 
 
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值