Repository
The Job Repository is where the elements stated above are persisted. It can be in memory or database, However it must be in database if restarting feature is used. It will store the jobs and steps, each job instance (meaning each job run, for example when a job is run each week), and each job and step execution (meaning each attempt to run: when a job instance fails, it can be restarted and there will be a new execution of the same instance and a new execution of the failed step). The job and step contexts are also saved for consistency when a job is restarted.