/**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $workflow = $this->getContainer()->get('workflow.' . $input->getArgument('name'));
     $definition = $this->getProperty($workflow, 'definition');
     $dumper = new GraphvizDumper();
     $marking = new Marking();
     foreach ($input->getArgument('marking') as $place) {
         $marking->mark($place);
     }
     $output->writeln($dumper->dump($definition, $marking));
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $container = $this->getContainer();
     $serviceId = $input->getArgument('name');
     if ($container->has('workflow.' . $serviceId)) {
         $workflow = $container->get('workflow.' . $serviceId);
     } elseif ($container->has('state_machine.' . $serviceId)) {
         $workflow = $container->get('state_machine.' . $serviceId);
     } else {
         throw new \InvalidArgumentException(sprintf('No service found for "workflow.%1$s" nor "state_machine.%1$s".', $serviceId));
     }
     $dumper = new GraphvizDumper();
     $marking = new Marking();
     foreach ($input->getArgument('marking') as $place) {
         $marking->mark($place);
     }
     $output->writeln($dumper->dump($workflow->getDefinition(), $marking));
 }
Beispiel #3
0
 public function testMarking()
 {
     $marking = new Marking(array('a' => 1));
     $this->assertTrue($marking->has('a'));
     $this->assertFalse($marking->has('b'));
     $this->assertSame(array('a' => 1), $marking->getPlaces());
     $marking->mark('b');
     $this->assertTrue($marking->has('a'));
     $this->assertTrue($marking->has('b'));
     $this->assertSame(array('a' => 1, 'b' => 1), $marking->getPlaces());
     $marking->unmark('a');
     $this->assertFalse($marking->has('a'));
     $this->assertTrue($marking->has('b'));
     $this->assertSame(array('b' => 1), $marking->getPlaces());
     $marking->unmark('b');
     $this->assertFalse($marking->has('a'));
     $this->assertFalse($marking->has('b'));
     $this->assertSame(array(), $marking->getPlaces());
 }
Beispiel #4
0
 private function enter($subject, Transition $transition, Marking $marking)
 {
     if (null !== $this->dispatcher) {
         $event = new Event($subject, $marking, $transition);
         $this->dispatcher->dispatch('workflow.enter', $event);
         $this->dispatcher->dispatch(sprintf('workflow.%s.enter', $this->name), $event);
     }
     foreach ($transition->getTos() as $place) {
         $marking->mark($place);
         if (null !== $this->dispatcher) {
             $this->dispatcher->dispatch(sprintf('workflow.%s.enter.%s', $this->name, $place), $event);
         }
     }
 }