Exemplo n.º 1
0
 /**
  * If workflow message handler receives a process-data message it forwards the message to this
  * method and uses the returned ProcessingMessage as response
  *
  * @param WorkflowMessage $workflowMessage
  * @return ProcessingMessage
  */
 protected function handleProcessData(WorkflowMessage $workflowMessage)
 {
     if (array_key_exists($workflowMessage->payload()->getTypeClass(), $this->getSupportedMessagesByTypeMap())) {
         $dataAsJsonString = json_encode($workflowMessage->payload());
         $answer = $workflowMessage->answerWithDataProcessingCompleted();
         try {
             \Zend\Stdlib\ErrorHandler::start();
             if (!file_put_contents(__DIR__ . '/../../data/target-data.txt', $dataAsJsonString)) {
                 \Zend\Stdlib\ErrorHandler::stop(true);
             }
         } catch (\Exception $ex) {
             $answer = \Prooph\Processing\Message\LogMessage::logException($ex, $workflowMessage);
         }
         return $answer;
     } else {
         return LogMessage::logErrorMsg(sprintf('%s: Unknown type %s received', __CLASS__, $workflowMessage->payload()->getTypeClass()), $workflowMessage);
     }
 }
Exemplo n.º 2
0
 /**
  * @param WorkflowMessage $workflowMessage
  * @throws \InvalidArgumentException
  */
 private function processData(WorkflowMessage $workflowMessage)
 {
     $metadata = $workflowMessage->metadata();
     if (isset($metadata[self::META_LOCATION]) && !isset($metadata[self::META_PATH])) {
         $metadata[self::META_PATH] = $this->locationTranslator->getPathFor($metadata[self::META_LOCATION]);
     }
     if (!isset($metadata[self::META_FILENAME_TEMPLATE])) {
         throw new \InvalidArgumentException("Missing filename_pattern in metadata");
     }
     if (!isset($metadata[self::META_FILE_TYPE])) {
         throw new \InvalidArgumentException("Missing file_type in metadata");
     }
     if (!isset($metadata[self::META_PATH])) {
         throw new \InvalidArgumentException("Missing path in metadata");
     }
     $metadata[self::META_PATH] = $this->sanitizePath($metadata[self::META_PATH]);
     if (!is_dir($metadata[self::META_PATH])) {
         throw new \InvalidArgumentException(sprintf('Directory %s is invalid', $metadata[self::META_PATH]));
     }
     if (!is_writable($metadata[self::META_PATH])) {
         throw new \InvalidArgumentException(sprintf('Directory %s is not writable', $metadata[self::META_PATH]));
     }
     $type = $workflowMessage->payload()->toType();
     $fileTypeAdapter = $this->fileTypeAdapters->get($metadata[self::META_FILE_TYPE]);
     if ($type->description()->nativeType() === NativeType::COLLECTION && isset($metadata[self::META_WRITE_MULTI_FILES]) && $metadata[self::META_WRITE_MULTI_FILES]) {
         foreach ($type as $index => $item) {
             $this->writeTypeToFile($item, $metadata, $fileTypeAdapter, $index);
         }
     } else {
         $this->writeTypeToFile($type, $metadata, $fileTypeAdapter);
     }
     return $workflowMessage->answerWithDataProcessingCompleted($metadata);
 }