public function execute(ExecutionContext $execution) { $data = $execution->read(); // For data from pipe, we need to get back global metadata... Little crappy I know... $metadata = $execution->getContextMetadata(); // Read data try { $data = $this->slice($execution, $metadata); } catch (\OutOfBoundsException $e) { // Message has no more data and should not be spread $execution->terminate(); $data = []; } // No data if (count($data) <= 0) { $this->debug('No data'); } // Store data read foreach ($data as $k => $result) { $metadata = $this->metadataAccessor->createMetadata($result, $metadata); $execution->write($result, $metadata); } // Limit total to the max if lesser if ($execution->hasNoTotal()) { $execution->changeTotal($this->count()); } $execution->valid(); }
public function execute(ExecutionContext $execution) { $property = $execution->getJobOption('property'); $data = $execution->read(); if (null !== $property) { $accessor = PropertyAccess::createPropertyAccessor(); } foreach ($data as $k => $result) { $context = $this->createContext($execution, $result->getMetadata()); $data = $result->getValue(); if (null !== $property) { $data = $accessor->getValue($data, $property); } $this->load($data, $context); } if (count($data) > 0) { $context = $this->createContext($execution, $result->getMetadata()); $this->flush($context); $this->clear($context); } if (false === $execution->getJobOption('requeue')) { // If a loader don't requeue message, the next job step will need the original data $execution->rewindData(); } }
public function execute(ExecutionContext $execution) { $data = $execution->read(); $this->debug(count($data) . ' rows'); foreach ($data as $k => $result) { $value = $result->getValue(); $metadata = $result->getMetadata(); $context = $this->createContext($execution, $metadata); $transformedData = $this->transform($value, $context); if (is_array($transformedData)) { foreach ($transformedData as $d) { $this->writeData($value, $metadata, $execution, $d); } } else { $this->writeData($value, $metadata, $execution, $transformedData); } } $execution->valid(); }