2014-10-26 173 views
0

我有一個工作(= JobA),用於讀取和處理輸入文件 - 使用讀取器,寫入器,多個處理器,偵聽器和異常處理程序定義此作業, 「T想主要是改變這種作業定義爲向後兼容的原因春季批處理從處理器調用另一個作業

我想實施其他作業(= JOBB)是用某一標準,並按照一定順序的目錄中讀取文件,然後將文件發送到由處理作業A

我正在調查[Mul tiResourceItemReader] [1]

[1]:http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/file/MultiResourceItemReader.html 「MultiResourceItemReader」 但我不知道怎樣才能納入呼召職吧這個

這可能嗎?

回答

3

考慮使用第二個作業包裝正在退出的作業,並在批處理:步驟元素中使用具有job-parameters-extractor的batch:job元素。

外部工作應該包括您的邏輯必需的文件列表與決策者。 批處理:作業將使用org.springframework.batch.core.step.job.JobParametersExtractor界面調用您正在退出的作業和作業參數提取器,該界面將將所需的 文件路徑複製到內部作業。

看看下面的answer我在哪裏使用了上面的元素。

按道理你的工作會像

<batch:job id="jobWrapper" incrementer="runIdIncrementer" > 
     <batch:step id="createFileList" next="callInternalJob"> 
      <batch:tasklet ref="fileterRequiredFilesTasklet"/> 
     </batch:step> 
     <batch:step id="callInternalJob" next="hasMoreFileDecision"> 
      <batch:job ref="yourJob" job-launcher="jobLauncher" 
       job-parameters-extractor="extractCurrentFileParam" /> 
     </batch:step> 
     <batch:decision id="hasMoreFileDecision" decider="hasMoreFileDecider"> 
      <batch:next on="NEXTFILE" to="callInternalJob" /> 
      <batch:end on="COMPLETED" exit-code="COMPLETED" /> 
     </batch:decision> 
    </batch:job> 

fileterRequiredFilesTasklet - 創建所需的文件列表,並將其存儲在作業執行上下文 callInternalJob - 打電話給你的退出工作和當前文件傳遞到通過callInternalJob處理 hasMoreFileDecider - 將遍歷由fileterRequiredFilesTasklet util創建的所有文件列表進行處理。

+0

謝謝 - 這正是我一直在尋找的 – 2014-10-29 16:44:48

相關問題