/**
  * @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;
 }