/** * Adds a link to the workflow. * * @param string $src * @param string $dst * @param SpecificationInterface $spec * * @return Builder * * @throws Exception\NoStartingNodeBuilderException */ public function link($src, $dst, SpecificationInterface $spec) { if (null === $this->start) { throw new Exception\NoStartingNodeBuilderException(); } $this->nodes->get($src)->addTransition($this->nodes->get($dst), $spec); return $this; }
/** * Initializes the workflow with a given token. * * @param string $token * * @return Workflow * * @throws Exception\InvalidTokenException */ public function initialize($token = null) { if (null === $token) { $this->current = $this->start; } elseif ($this->nodes->has($token)) { $this->current = $this->nodes->get($token); } else { throw new Exception\InvalidTokenException(); } return $this; }