2
我知道如何使用作業上下文獲取作業的執行ID和實例ID。但是,如果我重新開始工作,是否有辦法知道作業執行是否是作業中的第一次執行或重新啓動,例如在讀取器內部?JSR 352:有沒有辦法從作業中判斷某個特定作業的執行是否重啓?
我知道如何使用作業上下文獲取作業的執行ID和實例ID。但是,如果我重新開始工作,是否有辦法知道作業執行是否是作業中的第一次執行或重新啓動,例如在讀取器內部?JSR 352:有沒有辦法從作業中判斷某個特定作業的執行是否重啓?
這是一個有點過於複雜(如對方的回答指出,有開要考慮增強對未來的批次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;
}
沒有,但有一個開放的問題,要求是: https://java.net/bugzilla/show_bug.cgi?id=7473
鑑於先前的執行可能在任何地方失敗:早前在當前步驟(此閱讀器的一部分),你要問你真的在之前的步驟,想知道工作是否已經重新開始,或者您是否真的想知道在讀者中執行的任何代碼是否已經執行? –
我只想知道當前執行是否是重新啓動,理想情況下在偵聽器的beforeStep()或beforeJob() –