registry = $registry; } public function run(Step $step, Workflow $workflow, WorkflowRun $workflowRun): void { $action = $this->registry->getAction($step->getKey()); if (!$action) { throw new InvalidStateException(); } if (!$action->isValid($workflowRun->getSubjects(), $step, $workflow)) { throw new InvalidStateException(); } $action->run($workflow, $workflowRun, $step); } }