2016-05-11 25 views
2

我知道如何使用作業上下文獲取作業的執行ID和實例ID。但是,如果我重新開始工作,是否有辦法知道作業執行是否是作業中的第一次執行或重新啓動,例如在讀取器內部?JSR 352:有沒有辦法從作業中判斷某個特定作業的執行是否重啓?

+0

鑑於先前的執行可能在任何地方失敗:早前在當前步驟(此閱讀器的一部分),你要問你真的在之前的步驟,想知道工作是否已經重新開始,或者您是否真的想知道在讀者中執行的任何代碼是否已經執行? –

+0

我只想知道當前執行是否是重新啓動,理想情況下在偵聽器的beforeStep()或beforeJob() –

回答

1

這是一個有點過於複雜(如對方的回答指出,有開要考慮增強對未來的批次1.1的問題)。

你可以這樣做:

// 
// Assumes JobContext injected into 'jobCtx' field 
// 
private boolean isRestart() { 
    JobOperator jo = BatchRuntime.getJobOperator(); 
    JobInstance jobInstance = jo.getJobInstance(jobCtx.getExecutionId()); 
    int numExecutions = jo.getJobExecutions(jobInstance).size(); 
    return numExecutions > 1; 
} 
相關問題