Esempio n. 1
0
 /**
  * {@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'));
 }
Esempio n. 2
0
 /**
  * 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']));
     }
 }