[英]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.