/** * {@inheritdoc} */ protected function setUp() { $this->stateMachineBuilder = new StateMachineBuilder('Registration'); $this->stateMachineBuilder->addState('Input'); $this->stateMachineBuilder->addState('Confirmation'); $this->stateMachineBuilder->addState('Success'); $this->stateMachineBuilder->addState('Validation'); $this->stateMachineBuilder->addState('Registration'); $this->stateMachineBuilder->setStartState('Input', array($this, 'logActionCall')); $this->stateMachineBuilder->addTransition('Input', 'next', 'Validation', array($this, 'logActionCall')); $this->stateMachineBuilder->addTransition('Validation', 'valid', 'Confirmation', array($this, 'logActionCall')); $this->stateMachineBuilder->addTransition('Validation', 'invalid', 'Input', array($this, 'logActionCall')); $this->stateMachineBuilder->addTransition('Confirmation', 'next', 'Registration', array($this, 'logActionCall')); $this->stateMachineBuilder->addTransition('Confirmation', 'prev', 'Input', array($this, 'logActionCall')); $this->stateMachineBuilder->addTransition('Registration', 'next', 'Success', array($this, 'logActionCall')); $this->stateMachineBuilder->setEndState('Success', 'next', array($this, 'logActionCall')); $this->stateMachineBuilder->setEntryAction('Input', array($this, 'logActionCall')); $this->stateMachineBuilder->setActivity('Input', array($this, 'logActionCall')); $this->stateMachineBuilder->setExitAction('Input', array($this, 'logActionCall')); $this->stateMachineBuilder->setEntryAction('Confirmation', array($this, 'logActionCall')); $this->stateMachineBuilder->setActivity('Confirmation', array($this, 'logActionCall')); $this->stateMachineBuilder->setExitAction('Confirmation', array($this, 'logActionCall')); $this->stateMachineBuilder->setEntryAction('Success', array($this, 'logActionCall')); $this->stateMachineBuilder->setActivity('Success', array($this, 'logActionCall')); $this->stateMachineBuilder->setExitAction('Success', array($this, 'logActionCall')); $this->stateMachineBuilder->setEntryAction('Validation', array($this, 'logActionCall')); $this->stateMachineBuilder->setActivity('Validation', array($this, 'logActionCall')); $this->stateMachineBuilder->setExitAction('Validation', array($this, 'logActionCall')); $this->stateMachineBuilder->setEntryAction('Registration', array($this, 'logActionCall')); $this->stateMachineBuilder->setActivity('Registration', array($this, 'logActionCall')); $this->stateMachineBuilder->setExitAction('Registration', array($this, 'logActionCall')); }
/** * Configures a state. * * @param array $state * @throws \Piece\Flow\PageFlow\ProtectedEventException */ protected function configureState(array $state) { for ($i = 0, $count = count(@$state['transition']); $i < $count; ++$i) { if (in_array($state['transition'][$i]['event'], array(EventInterface::EVENT_ENTRY, EventInterface::EVENT_EXIT, EventInterface::EVENT_START, EventInterface::EVENT_DO))) { throw new ProtectedEventException("The event [ {$state['transition'][$i]['event']} ] cannot be used in flow definitions."); } $this->stateMachineBuilder->addTransition($state['name'], $state['transition'][$i]['event'], $state['transition'][$i]['nextState'], $this->wrapEventTriggerAction(@$state['transition'][$i]['action']), $this->wrapAction(@$state['transition'][$i]['guard'])); } if (!empty($state['entry'])) { $this->stateMachineBuilder->setEntryAction($state['name'], $this->wrapAction(@$state['entry'])); } if (!empty($state['exit'])) { $this->stateMachineBuilder->setExitAction($state['name'], $this->wrapAction(@$state['exit'])); } if (!empty($state['activity'])) { $this->stateMachineBuilder->setActivity($state['name'], $this->wrapEventTriggerAction(@$state['activity'])); } }