/** * @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; }