If a job fails, the Centerprise server would poll the job at a specified interval and retry the job, UNLESS another scheduled run should execute within that time.
Extremely ideally, the job would pick up with the TASK that failed within a Workflow/Dataflow (i.e. point of failure resumption).
An alternative to polling might be to defer the job to a new time. For example, the time of fail + <desired deferment interval>.
For restrictions, perhaps a retry count? after <number of retry attempts> the only way to re-run the job would be to run it manually or to wait for the next scheduled run.