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_ID JOB_NAME
1 EndOfDayJob

Table 3.3. BATCH_JOB_EXECUTION_PARAMS

JOB_EXECUTION_ID TYPE_CD KEY_NAME DATE_VAL IDENTIFYING
1 DATE schedule.Date 2008-01-01 TRUE

Table 3.4. BATCH_JOB_EXECUTION

JOB_EXEC_ID JOB_INST_ID START_TIME END_TIME STATUS
1 1 2008-01-01 21:00 2008-01-01 21:30 FAILED


Table 3.5. BATCH_JOB_INSTANCE

JOB_INST_ID JOB_NAME
1 EndOfDayJob
2 EndOfDayJob

Table 3.6. BATCH_JOB_EXECUTION_PARAMS

JOB_EXECUTION_ID TYPE_CD KEY_NAME DATE_VAL IDENTIFYING
1 DATE schedule.Date 2008-01-01 00:00:00 TRUE
2 DATE schedule.Date 2008-01-01 00:00:00 TRUE
3 DATE schedule.Date 2008-01-02 00:00:00 TRUE

Table 3.7. BATCH_JOB_EXECUTION

JOB_EXEC_ID JOB_INST_ID START_TIME END_TIME STATUS
1 1 2008-01-01 21:00 2008-01-01 21:30 FAILED
2 1 2008-01-02 21:00 2008-01-02 21:30 COMPLETED
3 2 2008-01-02 21:31 2008-01-02 22:29 COMPLETED


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_ID JOB_NAME
1 EndOfDayJob


Table 3.10. BATCH_JOB_PARAMS

JOB_INST_ID TYPE_CD KEY_NAME DATE_VAL
1 DATE schedule.Date 2008-01-01


Table 3.11. BATCH_JOB_EXECUTION

JOB_EXEC_ID JOB_INST_ID START_TIME END_TIME STATUS
1 1 2008-01-01 21:00 2008-01-01 21:30 FAILED


Table 3.12. BATCH_STEP_EXECUTION

STEP_EXEC_ID JOB_EXEC_ID STEP_NAME START_TIME END_TIME STATUS
1 1 loadDate 2008-01-01 21:00 2008-01-01 21:30 FAILED


Table 3.13. BATCH_STEP_EXECUTION_CONTEXT

STEP_EXEC_ID SHORT_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>



發佈了21 篇原創文章 · 獲贊 7 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章