/** * @param StateInterface $sourceState * @param StateInterface $targetState * @param string $eventName * @param ConditionInterface $condition * * @return TransitionInterface */ protected function findTransition(StateInterface $sourceState, StateInterface $targetState, $eventName = null, ConditionInterface $condition = null) { $conditionName = $condition ? $condition->getName() : null; /* @var $transition TransitionInterface */ foreach ($sourceState->getTransitions() as $transition) { $hasSameTargetState = $transition->getTargetState() === $targetState; $hasSameCondition = $transition->getConditionName() == $conditionName; $hasSameEvent = $transition->getEventName() == $eventName; if ($hasSameTargetState && $hasSameCondition && $hasSameEvent) { return $transition; } } }
/** * * @see MetaborStd.NamedInterface::getName() */ public function getName() { return 'not ( ' . $this->condition->getName() . ' )'; }
/** * @see MetaborStd\Statemachine.TransitionInterface::getConditionName() */ public function getConditionName() { if ($this->condition) { return $this->condition->getName(); } }