/** * Copies properties of a job to another job * * @param JobInterface $from The job where properties are copied from * @param \Abc\Bundle\JobBundle\Model\JobInterface $to The job where where properties are copied to * @return \Abc\Bundle\JobBundle\Model\JobInterface The copied job */ public function copyJob(JobInterface $from, \Abc\Bundle\JobBundle\Model\JobInterface $to) { $to->setType($from->getType()); $to->setResponse($from->getResponse()); $to->setParameters($from->getParameters()); if (null != $from->getStatus()) { $to->setStatus($from->getStatus()); } foreach ($from->getSchedules() as $schedule) { $to->addSchedule($schedule); } return $to; }
/** * Invokes the job. * * @param JobInterface $job * @param ContextInterface $context * @return mixed * @throws JobTypeNotFoundException */ public function invoke(JobInterface $job, ContextInterface $context) { $jobType = $this->registry->get($job->getType()); $callableArray = $jobType->getCallable(); $parameters = static::resolveParameters($jobType, $context, $job->getParameters()); if (is_array($callableArray) && ($callable = $callableArray[0])) { if ($callable instanceof JobAwareInterface) { $callable->setJob($job); } if ($callable instanceof ManagerAwareInterface) { $callable->setManager($this->manager); } if ($callable instanceof ControllerAwareInterface) { $callable->setController($this->controllerFactory->create($job)); } if ($callable instanceof LoggerAwareInterface && $context->has('abc.logger')) { $callable->setLogger($context->get('abc.logger')); } } return call_user_func_array($callableArray, $parameters); }