/** * Creates a new task for given message handler and workflow message * * @param MessageHandler $messageHandler * @param ProcessingMetadata $taskMetadata * @param Workflow\Message $workflowMessage * @return \Prooph\Link\ProcessManager\Model\Task * @throws \RuntimeException */ private function scheduleTaskFor(MessageHandler $messageHandler, ProcessingMetadata $taskMetadata, Message $workflowMessage) { if ($workflowMessage->messageType()->isCollectDataMessage()) { $taskType = TaskType::collectData(); } elseif ($workflowMessage->messageType()->isDataCollectedMessage() || $workflowMessage->messageType()->isDataProcessedMessage()) { $taskType = TaskType::processData(); } else { throw new \RuntimeException(sprintf("Failed to determine a task type which can handle a %s message", $workflowMessage->messageType()->toString())); } if (!empty($messageHandler->processingMetadata()->toArray())) { $taskMetadata = $taskMetadata->merge($messageHandler->processingMetadata()); } return Task::setUp($messageHandler, $taskType, $workflowMessage->processingType(), $taskMetadata); }
/** * @param MessageHandler $messageHandler */ private function syncMessageHandler(MessageHandler $messageHandler) { $additionalData = $messageHandler->additionalData(); if ($messageHandler->preferredProcessingType()) { $additionalData['preferred_type'] = $messageHandler->preferredProcessingType()->of(); } $additionalData['node_name'] = $messageHandler->processingNodeName()->toString(); $additionalData['icon'] = $messageHandler->icon(); $additionalData['icon_type'] = $messageHandler->iconType(); $additionalData['metadata'] = $messageHandler->processingMetadata()->toArray(); $additionalData['ui_metadata_riot_tag'] = $messageHandler->metadataRiotTag(); $allowedTypes = $messageHandler->supportedProcessingTypes()->areAllTypesSupported() ? MessageHandler\ProcessingTypes::SUPPORT_ALL : $messageHandler->supportedProcessingTypes()->typeList(); if ($messageHandler->isKnownInProcessingSystem()) { $this->commandBus->dispatch(ChangeConnectorConfig::ofConnector($messageHandler->processingId()->toString(), array_merge(['name' => $messageHandler->name(), 'allowed_messages' => $this->determineAllowedMessages($messageHandler), 'allowed_types' => $allowedTypes], $additionalData), $this->processingConfigLocation)); } else { $this->commandBus->dispatch(AddConnectorToConfig::fromDefinition($messageHandler->processingId()->toString(), $messageHandler->name(), $this->determineAllowedMessages($messageHandler), $allowedTypes, $this->processingConfigLocation, $additionalData)); } }