/** * get registered state or throw exception else * * @param string $name * @return State */ public function getState($name) { if (!array_key_exists($name, $this->states)) { throw WorkflowEngineException::youTryUseNonExistingState($name, array_keys($this->states)); } return $this->states[$name]; }
/** * Получает Transition Specification для перемещения сущности из oldState в newState * * @param string $oldStateName * @param string $newStateName * @return null|TransitionSpecification */ public function getTransitionSpecification($oldStateName, $newStateName) { $foundedTransitionSpecification = null; foreach ($this->transitionsSpecifications as $transition) { if ($transition->getOldState()->getName() === $oldStateName && $transition->getNewState()->getName() === $newStateName) { $foundedTransitionSpecification = $transition; } } if (is_null($foundedTransitionSpecification)) { throw WorkflowEngineException::cantFindTransitionSpecification($oldStateName, $newStateName, array_keys($this->getTransitionsSpecifications())); } return $foundedTransitionSpecification; }