diff --git a/library/Businessprocess/ImportedNode.php b/library/Businessprocess/ImportedNode.php new file mode 100644 index 0000000..fa43d2b --- /dev/null +++ b/library/Businessprocess/ImportedNode.php @@ -0,0 +1,104 @@ +name = $object->name; + $this->configName = $object->configName; + $this->bp = $bp; + if (isset($object->state)) { + $this->setState($object->state); + } else { + $this->setMissing(); + } + } + + public function getConfigName() + { + return $this->configName; + } + + public function getState() + { + if ($this->state === null) { + $this->state = $this->importedNode()->getState(); + } + return $this->state; + } + + public function getSortingState() + { + return $this->importedNode()->getSortingState(); + } + + public function getAlias() + { + return $this->importedNode()->getAlias(); + } + + public function isMissing() + { + return $this->getState() === null; + } + + public function isInDowntime() + { + if ($this->downtime === null) { + $this->downtime = $this->importedNode()->isInDowntime(); + } + return $this->downtime; + } + + public function isAcknowledged() + { + if ($this->ack === null) { + $this->downtime = $this->importedNode()->isAcknowledged(); + } + return $this->ack; + } + + protected function importedNode() + { + if ($this->importedNode === null) { + $storage = new LegacyStorage( + Config::module('businessprocess')->getSection('global') + ); + $this->importedBp = $storage->loadProcess($this->configName); + if ($this->bp->usesSoftStates()) { + $this->importedBp->useSoftStates(); + } else { + $this->importedBp->useHardStates(); + } + $this->importedBp->retrieveStatesFromBackend(); + $this->importedNode = $this->importedBp->getNode($this->name); + } + return $this->importedNode; + } + + public function renderLink($view) + { + if ($this->bp->isSimulationMode()) { + return $view->qlink($this->getAlias(), 'businessprocess/importednode/simulate', array( + 'processName' => $this->configName, + 'node' => $this->name + )); + } else { + return $view->qlink($this->getAlias(), 'businessprocess/process/show', array( + 'processName' => $this->configName, + 'process' => $this->name + )); + } + } +}