/** * @param Workflow $workflow * @throws AssemblerException */ protected function validateWorkflow(Workflow $workflow) { $startTransitions = $workflow->getTransitionManager()->getTransitions()->filter(function (Transition $transition) { return $transition->isStart(); }); if (!$startTransitions->count()) { throw new AssemblerException(sprintf('Workflow "%s" does not contains neither start step nor start transitions', $workflow->getName())); } if ($workflow->getType() == Workflow::TYPE_ENTITY) { /** @var Step $step */ foreach ($workflow->getStepManager()->getSteps() as $step) { if ($step->getFormOptions()) { throw new AssemblerException(sprintf('Workflow "%s" has type "entity" and cannot support form options in step "%s"', $workflow->getName(), $step->getName())); } } } }