/** * {@inheritdoc} */ public function execute(Execution $execution) { $nodes = $this->process->findInitialNodes(); if (count($nodes) !== 1) { throw new \RuntimeException(sprintf('No single start node found in process "%s"', $this->process->getTitle())); } $startNode = array_shift($nodes); $sub = $execution->createNestedExecution($this->process, $startNode, true, $this->isolateScope); foreach ($this->inputs as $target => $source) { if ($execution->hasVariable($source)) { $sub->setVariable($target, $execution->getVariable($source)); } } $execution->waitForSignal(); $sub->execute($startNode); }