lib/workflow-in-memory-backend.js
function resumeJob(job, callback) {
            if (!jobs[job.uuid]) {
                return callback(new e.BackendResourceNotFoundError(sprintf(
                  'Job with uuid \'%s\' does not exist', job.uuid)));
            } else if (jobs[job.uuid].execution !== 'waiting') {
                return callback(new e.BackendPreconditionFailedError(
                  'Only waiting jobs can be resumed'));
            } else {
                job.runner_id = null;
                job.execution = 'queued';
                jobs[job.uuid] = clone(job);
                waiting_jobs = waiting_jobs.filter(function (j) {
                    return (j !== job.uuid);
                });
                queued_jobs.push(job.uuid);
                return callback(null, job);
            }
        }
function resumeJob(job, callback) {
            if (!jobs[job.uuid]) {
                return callback(new e.BackendResourceNotFoundError(sprintf(
                  'Job with uuid \'%s\' does not exist', job.uuid)));
            } else if (jobs[job.uuid].execution !== 'waiting') {
                return callback(new e.BackendPreconditionFailedError(
                  'Only waiting jobs can be resumed'));
            } else {
                job.runner_id = null;
                job.execution = 'queued';
                jobs[job.uuid] = clone(job);
                waiting_jobs = waiting_jobs.filter(function (j) {
                    return (j !== job.uuid);
                });
                queued_jobs.push(job.uuid);
                return callback(null, job);
            }
        }
Tell a waiting job that whatever it has been waiting for has happened and it can run again. job - the job Object. It'll be saved to the backend with the provided properties to ensure job status persistence. callback - f(err, job) callback will be called with error if something fails, otherwise it'll return the updated job using getJob.