diff --git a/library/Businessprocess/BpConfig.php b/library/Businessprocess/BpConfig.php index cfe2700..861505a 100644 --- a/library/Businessprocess/BpConfig.php +++ b/library/Businessprocess/BpConfig.php @@ -608,16 +608,17 @@ class BpConfig return $this->importedConfigs[$name]; } - public function listInvolvedConfigs(&$usedConfigs = null) + public function listInvolvedConfigs(&$configs = null) { - $configs = []; - foreach ($this->importedNodes as $node) { - $config = $node->getBpConfig(); - $configs[] = $config; + if ($configs === null) { + $configs[$this->getName()] = $this; + } - if (! isset($usedConfigs[$node->getConfigName()])) { - $usedConfigs[$config->getName()] = true; - $configs = array_merge($configs, $config->listInvolvedConfigs($usedConfigs)); + foreach ($this->importedNodes as $node) { + if (! isset($configs[$node->getConfigName()])) { + $config = $node->getBpConfig(); + $configs[$node->getConfigName()] = $config; + $config->listInvolvedConfigs($configs); } } diff --git a/library/Businessprocess/State/MonitoringState.php b/library/Businessprocess/State/MonitoringState.php index 1e48f65..80d5f41 100644 --- a/library/Businessprocess/State/MonitoringState.php +++ b/library/Businessprocess/State/MonitoringState.php @@ -94,7 +94,6 @@ class MonitoringState Benchmark::measure('Retrieved states for ' . count($serviceStatus) . ' services in ' . $config->getName()); $configs = $config->listInvolvedConfigs(); - $configs[] = $config; foreach ($configs as $cfg) { foreach ($serviceStatus as $row) { $this->handleDbRow($row, $cfg);