/**
  * Create the steps.
  *
  * @param Workflow $workflow The current workflow.
  *
  * @return void
  */
 private function createSteps(Workflow $workflow)
 {
     $collection = StepModel::findByWorkflow($workflow->getConfigValue('id'));
     if (!$collection) {
         return;
     }
     while ($collection->next()) {
         /** @var StepModel $model */
         $model = $collection->current();
         $step = new Step($model->name, $model->label, array_merge($collection->row(), array(Definition::SOURCE => Definition::SOURCE_DATABASE)));
         $step->setFinal($model->final);
         if ($model->limitPermission) {
             $step->setPermission(Permission::fromString($model->permission));
         }
         $workflow->addStep($step);
         $event = new CreateStepEvent($workflow, $step);
         $this->getServiceContainer()->getEventDispatcher()->dispatch($event::NAME, $event);
         $this->steps[$model->id] = $step;
     }
 }