queue = new ImportJobQueue(); } public function execute(string $identifier): ImportJobResult { $result = new ImportJobResult(); $result->addLog(sprintf('[ImportPipeline] starting with identifier %s.', $identifier)); if ($this->queue->isEmpty()) { $result->addLog('[ImportPipeline] no jobs configured for execution.'); $result->getStatus()->markFailed(); $result->setEndedAt(microtime(true)); return $result; } $dispatcher = new ImportJobDispatcher(); $result = $dispatcher->dispatch($this->queue, $result); if ($result->getStatus()->isSuccess()) { $result->addLog('[ImportPipeline] completed successfully.'); } elseif ($result->getStatus()->isFailed()) { $result->addLog('[ImportPipeline] pipeline failed.'); } return $result; } public function addJob(ImportJobInterface $job): void { $this->queue->add($job); } }