Beispiel #1
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 #2
0
 private function leave($subject, Transition $transition, Marking $marking)
 {
     if (null !== $this->dispatcher) {
         $event = new Event($subject, $marking, $transition);
         $this->dispatcher->dispatch('workflow.leave', $event);
         $this->dispatcher->dispatch(sprintf('workflow.%s.leave', $this->name), $event);
     }
     foreach ($transition->getFroms() as $place) {
         $marking->unmark($place);
         if (null !== $this->dispatcher) {
             $this->dispatcher->dispatch(sprintf('workflow.%s.leave.%s', $this->name, $place), $event);
         }
     }
 }