/**
  * {@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;
 }
示例#2
0
 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);
 }
示例#3
0
 /**
  * @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);
 }
示例#6
0
 /**
  * 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);
 }