2016-05-11 17 views
2

Ich weiß, wie Sie die Ausführungs-ID und die Instanz-ID eines Jobs mithilfe des Jobkontexts abrufen können. Aber wenn ich einen Job neu starte, gibt es eine Möglichkeit zu wissen, ob die Jobausführung die erste Ausführung oder ein Neustart innerhalb des Jobs ist, zum Beispiel im Reader?JSR 352: Gibt es eine Möglichkeit festzustellen, ob eine bestimmte Jobausführung ein Neustart ist oder nicht innerhalb eines Jobs?

+0

Da eine vorherige Ausführung überall versagt haben könnte: in einem vorherigen Schritt, früher in dem aktuellen Schritt (dieser Leser ist ein Teil), müssen Sie Sie wirklich fragen, tun Möchten Sie wissen, ob der Job neu gestartet wurde oder möchten Sie wissen, ob der Code, den Sie gerade im Reader ausführen möchten, bereits ausgeführt wurde? –

+0

Ich möchte nur wissen, ob die aktuelle Ausführung ein Neustart ist oder nicht, idealerweise in einem beforeStep() oder beforeJob() –

Antwort

1

Das ist ein bisschen zu kompliziert (wie die andere Antwort erwähnt, gibt es ein Problem zu betrachten Erweiterung für die Zukunft Batch geöffnet 1.1).

Sie können dies tun:

// 
// 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; 
}