/**
  * @param AddNewProcessToConfig $command
  */
 public function handle(AddNewProcessToConfig $command)
 {
     $processingConfig = ProcessingConfig::initializeFromConfigLocation($command->configLocation());
     $processingConfig->addProcess($command->processName(), $command->processType(), $command->startMessage(), $command->tasks(), $this->configWriter);
     $this->publishChangesOf($processingConfig);
 }
 /**
  * @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!");
     }
 }