/**
  * Return compiled machine
  *
  * @return Machine Machine instance
  */
 public function getMachine()
 {
     $transitionChain = TransitionChain::create();
     $transitionChain->addTransition(new Transition('pay', new State('unpaid'), new State('paid')))->addTransition(new Transition('revise', new State('unpaid'), new State('revised')))->addTransition(new Transition('ship', new State('revised'), new State('shipped')));
     $machine = new Machine('id', $transitionChain, 'unpaid');
     return $machine;
 }
Exemple #2
0
 /**
  * Compile transitions and return structure compiled.
  *
  * @param array $configuration Configuration
  *
  * @return TransitionChain Transition chain compiled
  */
 private function compileTransitions(array $configuration)
 {
     $transitionChain = TransitionChain::create();
     foreach ($configuration as $transitionConfiguration) {
         list($startStateName, $transitionName, $finalStateName) = $transitionConfiguration;
         $startState = new State($startStateName);
         $finalState = new State($finalStateName);
         $transition = new Transition($transitionName, $startState, $finalState);
         $transitionChain->addTransition($transition);
     }
     return $transitionChain;
 }