簡體   English   中英

在春季批處理中從處理器調用另一個作業

[英]Calling another job from a processor in spring batch

我有一個作業(= JobA ),可以讀取和處理輸入文件-該作業是使用讀取器,寫入器,多個處理器,偵聽器和異常處理程序定義的,而我不想更改該作業定義,主要是出於向后兼容的原因

我想實現另一個作業(= JobB ),該作業以一定的標准和順序從目錄中讀取文件,然后發送要由JobA處理的文件

我正在研究[MultiResourceItemReader] [1]

[1]: http : //docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/file/MultiResourceItemReader.html “ MultiResourceItemReader”,但我看不到如何將對JobA的調用合並進入這個

可能嗎?

考慮使用第二個作業包裝現有的作業,並在batch:step元素內使用具有job-parameters-extractor的batch:job元素。

外部作業應包括您的決定器所需文件列表的邏輯。 batch:job將使用org.springframework.batch.core.step.job.JobParametersExtractor接口調用現有的作業和job-parameters-extractor,該接口會將所需的文件路徑復制到內部作業。

在我使用上面元素的地方看下面的答案

邏輯上你的工作看起來像

<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創建的文件列表,所有這些都已處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM