2014-02-13 50 views
1

我一直在轉換一些夜間計劃作業,以便在下一個作業之後運行一個作業。這在Spring Batch中完全合法,因爲可以通過引用其他作業來定義Step。如何等待春季批量完成不可重啓作業

問題是一些相同的子作業按Quartz計劃運行,並且它們不可重啓。這意味着有時候「工作崗位」會失敗,因爲它試圖開始一個已經運行的工作。這就產生了深受喜愛:

JobRestartException: JobInstance already exists and is not restartable 

我的問題是,這是否是一種方法來告訴Spring Batch的哀號,直到引用的工作空缺,然後運行它。這是因爲夜間工作流程需要A-> B-> C。我知道我可以編寫我自己的自定義作業啓動器來輪詢JobRepository以查找有問題的子作業的ExecutionStatus來完成,但我希望SB已經想到了這個常見問題。

更新,喬布斯的例子,爲那些誰問它如何工作。 ref指向SimpleJob bean的作業。這很有效,但是當小孩作業已經運行時,如上所述的錯誤。

<!-- Example Job of Jobs --> 
<job id="jobOfJobs"> 
    <step id="step1"> 
    <job ref="job1" /> 
    </step> 
    <step id="step2"> 
    <job ref="job2" /> 
    </step> 
</job> 
+0

你能指出我的一些文件上製作步驟參考工作的一個步驟管理依賴?我很好奇,我想可能會導致狀態和執行上下文含義豐盛。至於你的問題,從介紹中,「Spring Batch不是一個調度框架」。國際海事組織,如果你試圖讓它作爲一個行爲,特別是當Quartz已經在圖片中時,你會問一些麻煩。 –

+0

@EmersonFarrugia感謝您的提示。在我開始這項工作之前,我也自己讀過這段引文。但是,使用上述我已經能夠有效地使用SB作爲調度框架。 –

回答

0

如果您需要就業之間把他們當作使用JobStep