コード例 #1
0
 public function testIsTransitionAvailable()
 {
     $workflowName = 'test_workflow';
     $workflowItem = new WorkflowItem();
     $workflowItem->setWorkflowName($workflowName);
     $errors = new ArrayCollection();
     $transition = new Transition();
     $transition->setName('test_transition');
     $workflow = $this->createWorkflow($workflowName);
     $workflow->expects($this->once())->method('isTransitionAvailable')->with($workflowItem, $transition, $errors)->will($this->returnValue(true));
     $this->workflowRegistry->expects($this->once())->method('getWorkflow')->with($workflowName)->will($this->returnValue($workflow));
     $this->assertTrue($this->workflowManager->isTransitionAvailable($workflowItem, $transition, $errors));
 }
コード例 #2
0
ファイル: Workflow.php プロジェクト: ramunasd/platform
 /**
  * @param WorkflowItem $workflowItem
  * @param Transition $transition
  * @return WorkflowTransitionRecord
  * @throws WorkflowException
  */
 protected function createTransitionRecord(WorkflowItem $workflowItem, Transition $transition)
 {
     $transitionName = $transition->getName();
     $stepFrom = $workflowItem->getCurrentStep();
     $stepName = $transition->getStepTo()->getName();
     $stepTo = $this->getDefinition()->getStepByName($stepName);
     if (!$stepTo) {
         throw new WorkflowException(sprintf('Workflow "%s" does not have step entity "%s"', $this->getName(), $stepName));
     }
     $transitionRecord = new WorkflowTransitionRecord();
     $transitionRecord->setTransitionName($transitionName)->setStepFrom($stepFrom)->setStepTo($stepTo);
     return $transitionRecord;
 }
コード例 #3
0
 public function testGetAllowedTransitions()
 {
     $firstTransition = new Transition();
     $firstTransition->setName('first_transition');
     $secondTransition = new Transition();
     $secondTransition->setName('second_transition');
     $step = new Step();
     $step->setName('test_step');
     $step->setAllowedTransitions(array($secondTransition->getName()));
     $workflow = $this->createWorkflow();
     $workflow->getStepManager()->setSteps(array($step));
     $workflow->getTransitionManager()->setTransitions(array($firstTransition, $secondTransition));
     $workflowItem = new WorkflowItem();
     $workflowItem->setCurrentStepName($step->getName());
     $actualTransitions = $workflow->getTransitionsByWorkflowItem($workflowItem);
     $this->assertEquals(array($secondTransition), $actualTransitions->getValues());
 }
コード例 #4
0
 /**
  * Get transition form.
  *
  * @param WorkflowItem $workflowItem
  * @param Transition $transition
  * @return Form
  */
 protected function getTransitionForm(WorkflowItem $workflowItem, Transition $transition)
 {
     return $this->createForm($transition->getFormType(), $workflowItem->getData(), array_merge($transition->getFormOptions(), array('workflow_item' => $workflowItem, 'transition_name' => $transition->getName())));
 }
コード例 #5
0
ファイル: TransitionTest.php プロジェクト: xamin123/platform
 public function testHasForm()
 {
     $obj = new Transition();
     $this->assertFalse($obj->hasForm());
     // by default transition has form
     $obj->setFormOptions(array('key' => 'value'));
     $this->assertFalse($obj->hasForm());
     $obj->setFormOptions(array('attribute_fields' => array()));
     $this->assertFalse($obj->hasForm());
     $obj->setFormOptions(array('attribute_fields' => array('key' => 'value')));
     $this->assertTrue($obj->hasForm());
 }
コード例 #6
0
 /**
  * @param string $name
  * @param array $options
  * @param array $definition
  * @param Step[]|ArrayCollection $steps
  * @param Attribute[]|Collection $attributes
  * @return Transition
  * @throws AssemblerException
  */
 protected function assembleTransition($name, array $options, array $definition, $steps, $attributes)
 {
     $this->assertOptions($options, array('step_to', 'label'));
     $stepToName = $options['step_to'];
     if (empty($steps[$stepToName])) {
         throw new AssemblerException(sprintf('Step "%s" not found', $stepToName));
     }
     $transition = new Transition();
     $transition->setName($name)->setLabel($options['label'])->setStepTo($steps[$stepToName])->setMessage($this->getOption($options, 'message'))->setStart($this->getOption($options, 'is_start', false))->setHidden($this->getOption($options, 'is_hidden', false))->setUnavailableHidden($this->getOption($options, 'is_unavailable_hidden', false))->setFormType($this->getOption($options, 'form_type', WorkflowTransitionType::NAME))->setFormOptions($this->assembleFormOptions($options, $attributes, $name))->setFrontendOptions($this->getOption($options, 'frontend_options', array()))->setDisplayType($this->getOption($options, 'display_type', WorkflowConfiguration::DEFAULT_TRANSITION_DISPLAY_TYPE))->setPageTemplate($this->getOption($options, 'page_template'))->setDialogTemplate($this->getOption($options, 'dialog_template'));
     $definition['pre_conditions'] = $this->addAclPreConditions($options, $definition);
     if (!empty($definition['pre_conditions'])) {
         $condition = $this->conditionFactory->create(ConfigurableCondition::ALIAS, $definition['pre_conditions']);
         $transition->setPreCondition($condition);
     }
     if (!empty($definition['conditions'])) {
         $condition = $this->conditionFactory->create(ConfigurableCondition::ALIAS, $definition['conditions']);
         $transition->setCondition($condition);
     }
     if (!empty($definition['post_actions'])) {
         $postAction = $this->actionFactory->create(ConfigurableAction::ALIAS, $definition['post_actions']);
         $transition->setPostAction($postAction);
     }
     return $transition;
 }
コード例 #7
0
 /**
  * @param WorkflowItem $workflowItem
  * @param Transition $transition
  * @return WorkflowTransitionRecord
  */
 protected function createTransitionRecord(WorkflowItem $workflowItem, Transition $transition)
 {
     $transitionName = $transition->getName();
     $stepFrom = $workflowItem->getCurrentStepName();
     $stepTo = $transition->getStepTo()->getName();
     $transitionRecord = new WorkflowTransitionRecord();
     $transitionRecord->setTransitionName($transitionName)->setStepFromName($stepFrom)->setStepToName($stepTo);
     return $transitionRecord;
 }