/** * {@inheritdoc} * * @return JobInstance */ protected function createEntity(array $data) { $job = new JobInstance($data['connector'], $data['type'], 'alias'); $job->setCode($data['code']); $job->setLabel($data['label']); return $job; }
public function loadJobInstances(ObjectManager $manager) { $handle = fopen(__DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'job_instance_data.csv', 'r'); $headers = fgetcsv($handle, 1000, ','); while (($data = fgetcsv($handle, 1000, ',')) !== false) { $combined = array_combine($headers, $data); $jobInstanceEntity = new JobInstance(); $jobInstanceEntity->setCode($combined['Code']); $jobInstanceEntity->setAlias($combined['Alias']); $jobInstanceEntity->setStatus($combined['Status']); $jobInstanceEntity->setConnector($combined['Connector']); $jobInstanceEntity->setType($combined['Type']); $manager->persist($jobInstanceEntity); $this->jobInstances[$combined['Id']] = $jobInstanceEntity; } fclose($handle); }
/** * @param string $jobType * @param string $jobName * @param array $configuration * @return JobResult */ public function executeJob($jobType, $jobName, array $configuration = array()) { // create and persist job instance and job execution $jobInstance = new JobInstance(self::CONNECTOR_NAME, $jobType, $jobName); $jobInstance->setCode($this->generateJobCode($jobName)); $jobInstance->setLabel(sprintf('%s.%s', $jobType, $jobName)); $jobInstance->setRawConfiguration($configuration); $jobExecution = new JobExecution(); $jobExecution->setJobInstance($jobInstance); // persist batch entities $this->batchJobManager->persist($jobInstance); $this->batchJobManager->persist($jobExecution); // do job $jobResult = $this->doJob($jobInstance, $jobExecution); // EntityManager can be closed when there was an exception in flush method called inside some jobs execution // Can't be implemented right now due to OroEntityManager external dependencies // on ExtendManager and FilterCollection if (!$this->entityManager->isOpen()) { $this->managerRegistry->resetManager(); $this->entityManager = $this->managerRegistry->getManager(); } // flush batch entities $this->batchJobManager->flush($jobInstance); $this->batchJobManager->flush($jobExecution); // set data to JobResult $jobResult->setJobId($jobInstance->getId()); $jobResult->setJobCode($jobInstance->getCode()); // TODO: Find a way to work with multiple amount of job and step executions // TODO: https://magecore.atlassian.net/browse/BAP-2600 /** @var JobExecution $jobExecution */ $jobExecution = $jobInstance->getJobExecutions()->first(); if ($jobExecution) { $stepExecution = $jobExecution->getStepExecutions()->first(); if ($stepExecution) { $context = $this->contextRegistry->getByStepExecution($stepExecution); $jobResult->setContext($context); } } return $jobResult; }
/** * @param TableNode $table * * @Given /^the following jobs?:$/ */ public function theFollowingJobs(TableNode $table) { $registry = $this->getContainer()->get('akeneo_batch.connectors'); foreach ($table->getHash() as $data) { $jobInstance = new JobInstance($data['connector'], $data['type'], $data['alias']); $jobInstance->setCode($data['code']); $jobInstance->setLabel($data['label']); $job = $registry->getJob($jobInstance); $jobInstance->setJob($job); $this->validate($jobInstance); $this->persist($jobInstance); } }
public function testToString() { $startTime = new \DateTime('2013-02-01 12:34:56'); $updatedTime = new \DateTime('2013-02-03 23:45:01'); $status = BatchStatus::STOPPED; $exitStatus = ExitStatus::FAILED; $jobInstance = new JobInstance('test_connector', JobInstance::TYPE_IMPORT, 'test_job_instance'); $jobInstance->setCode('job instance code'); $endTime = new \DateTime('2013-03-04 21:43:05'); $this->jobExecution->setStartTime($startTime); $this->jobExecution->setUpdatedTime($updatedTime); $this->jobExecution->setStatus(new BatchStatus($status)); $this->jobExecution->setExitStatus(new ExitStatus($exitStatus, 'Test description')); $this->jobExecution->setJobInstance($jobInstance); $this->jobExecution->setEndTime($endTime); $timezone = $startTime->format('P'); $expectedOutput = 'startTime=2013-02-01T12:34:56' . $timezone . ', endTime=2013-03-04T21:43:05' . $timezone . ', ' . 'updatedTime=2013-02-03T23:45:01' . $timezone . ', status=5, exitStatus=[FAILED] Test description, ' . 'exitDescription=[Test description], job=[job instance code]'; $this->assertEquals($expectedOutput, (string) $this->jobExecution); }
/** * Create and persist job instance. * * @param string $jobType * @param string $jobName * @param array $configuration * @return JobInstance */ protected function createJobInstance($jobType, $jobName, array $configuration) { $jobInstance = new JobInstance(self::CONNECTOR_NAME, $jobType, $jobName); $jobInstance->setCode($this->generateJobCode($jobName)); $jobInstance->setLabel(sprintf('%s.%s', $jobType, $jobName)); if (array_key_exists(self::JOB_CONTEXT_DATA_KEY, $configuration)) { unset($configuration[self::JOB_CONTEXT_DATA_KEY]); } $jobInstance->setRawConfiguration($configuration); $this->batchJobRepository->getJobManager()->persist($jobInstance); return $jobInstance; }
/** * {@inheritDoc} */ public function setCode($code) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'setCode', array($code)); return parent::setCode($code); }