/** * @param WorkflowDispatchEventInterface $value * * @return bool * @throws \OldTown\Workflow\ZF2\Toolkit\Validator\Exception\InvalidConvertTypeException */ public function isValid($value) { if (!$value instanceof WorkflowDispatchEventInterface) { $this->error(self::VALIDATE_VALUE_INVALID); return false; } $name = array_key_exists('paramNameInPrepareData', $this->options) ? $this->options['paramNameInPrepareData'] : null; if (!is_string($name)) { $this->error(self::PARAM_NAME_IN_PREPARE_DATA_INVALID); return false; } $prepareData = $value->getPrepareData(); if (!array_key_exists($name, $prepareData)) { $this->error(self::PARAM_NOT_FOUND_IN_PREPARE_DATA); return false; } $actualValue = $prepareData[$name]; $typeExpectedValue = array_key_exists('typeExpectedValue', $this->options) ? $this->options['typeExpectedValue'] : 'string'; $rawExpectedValue = array_key_exists('expectedValue', $this->options) ? $this->options['expectedValue'] : null; try { $expectedValue = $this->getExpectedValue($rawExpectedValue, $typeExpectedValue); } catch (Exception\InvalidConvertTypeException $e) { $this->error(self::ERROR_CONVERT_EXPECTED_VALUE); return false; } return $expectedValue === $actualValue; }
/** * Запуск workflow * * @param WorkflowDispatchEventInterface $e * * @return TransitionResultInterface * * * @throws Exception\InvalidArgumentException * @throws Exception\WorkflowDispatchEventException * @throws \OldTown\Workflow\ZF2\ServiceEngine\Exception\InvalidInitializeWorkflowEntryException * @throws \OldTown\Workflow\ZF2\ServiceEngine\Exception\DoActionException */ public function onRunWorkflowHandler(WorkflowDispatchEventInterface $e) { $runWorkflowParam = $e->getRunWorkflowParam(); $runWorkflowParam->valid(); $transientVars = $this->factoryTransientVars(); $prepareData = $e->getPrepareData(); foreach ($prepareData as $key => $value) { $transientVars[$key] = $value; } $runWorkflowParam = $e->getRunWorkflowParam(); $runWorkflowParam->valid(); $workflowManagerName = $runWorkflowParam->getManagerName(); $workflowActionName = $runWorkflowParam->getActionName(); $workflowActivity = $runWorkflowParam->getRunType(); $result = null; switch ($runWorkflowParam->getRunType()) { case RunWorkflowParamInterface::WORKFLOW_RUN_INITIALIZE: $workflowName = $runWorkflowParam->getWorkflowName(); $result = $this->getWorkflowService()->initialize($workflowManagerName, $workflowName, $workflowActionName, $transientVars); break; case RunWorkflowParamInterface::WORKFLOW_RUN_TYPE_DO_ACTION: $entryId = $runWorkflowParam->getEntryId(); $result = $this->getWorkflowService()->doAction($workflowManagerName, $entryId, $workflowActionName, $transientVars); break; default: $errMsg = sprintf('Invalid activity %s', $workflowActivity); throw new Exception\InvalidArgumentException($errMsg); } return $result; }