/** * @param Workflow $workflow * @throws \RuntimeException * @return void */ public function writeToProcessingConfig(Workflow $workflow) { $processNum = count($workflow->processList()); if ($processNum == 0) { $this->commandBus->dispatch(RemoveProcessConfig::ofProcessTriggeredByMessage($workflow->startMessage()->messageName(), $this->processingConfigLocation)); return; } $processDefinitions = $this->processingConfig->getProcessDefinitions(); if ($processNum == 1) { $processConfig = $this->translateToProcessingProcess($workflow->processList()[0]); $processConfig['name'] = $workflow->name(); if (isset($processDefinitions[$workflow->startMessage()->messageName()])) { $this->commandBus->dispatch(ChangeProcessConfig::ofProcessTriggeredByMessage($workflow->startMessage()->messageName(), $processConfig, $this->processingConfigLocation)); } else { $this->commandBus->dispatch(AddNewProcessToConfig::fromDefinition($processConfig['name'], $processConfig['process_type'], $workflow->startMessage()->messageName(), $processConfig['tasks'], $this->processingConfigLocation)); } } else { throw new \RuntimeException("Handling of more than process per workflow is not supported yet!"); } }