protected function doOrderedJobs()
    {
        $jobNames = $this->getOrderedJobNames();
        foreach ($jobNames as $jobName) {
            $job = $this->getLocalJob($jobName);
            if (!$job) {
                throw new \Exception("job [$jobName] not exists");
            }
            $job->execute();
            $this->updateLocalJob($job);
            if (!$job->isFinished()) {
                break;
            }
        }
    }