/**
  * @param array|null $usedDirectories
  * @param array|null $usedWorkflows
  * @return array
  * @throws InvalidConfigurationException
  */
 public function getWorkflowDefinitionConfiguration(array $usedDirectories = null, array $usedWorkflows = null)
 {
     $finder = $this->getConfigFinder((array) $usedDirectories);
     $configuration = array();
     /** @var $file \SplFileInfo */
     foreach ($finder as $file) {
         $realPathName = $file->getRealPath();
         $configData = $this->loadConfigFile($file);
         try {
             $finalizedData = $this->configuration->processConfiguration($configData);
         } catch (InvalidConfigurationException $exception) {
             $message = sprintf('Can\'t parse workflow configuration from %s. %s', $realPathName, $exception->getMessage());
             throw new InvalidConfigurationException($message);
         }
         foreach ($finalizedData as $workflowName => $workflowConfiguration) {
             // skip not used workflows
             if (null !== $usedWorkflows && !in_array($workflowName, $usedWorkflows)) {
                 continue;
             }
             if (isset($configuration[$workflowName])) {
                 throw new InvalidConfigurationException(sprintf('Duplicated workflow name "%s" in %s', $workflowName, $realPathName));
             }
             $configuration[$workflowName] = $workflowConfiguration;
         }
     }
     return $configuration;
 }
 /**
  * @return array
  * @throws InvalidConfigurationException
  */
 public function getWorkflowDefinitionConfiguration()
 {
     $configDirectories = $this->getConfigDirectories();
     $finder = new Finder();
     $finder->in($configDirectories)->name($this->configFilePattern);
     $configuration = array();
     /** @var $file \SplFileInfo */
     foreach ($finder as $file) {
         $realPathName = $file->getRealPath();
         $configData = Yaml::parse($realPathName);
         try {
             $finalizedData = $this->configuration->processConfiguration($configData);
         } catch (InvalidConfigurationException $exception) {
             $message = sprintf('Can\'t parse workflow configuration from %s. %s', $realPathName, $exception->getMessage());
             throw new InvalidConfigurationException($message);
         }
         foreach ($finalizedData as $workflowName => $workflowConfiguration) {
             if (isset($configuration[$workflowName])) {
                 throw new InvalidConfigurationException(sprintf('Duplicated workflow name "%s" in %s', $workflowName, $realPathName));
             }
             $configuration[$workflowName] = $workflowConfiguration;
         }
     }
     return $configuration;
 }