/** * Get Workflow by WorkflowDefinition * * @param WorkflowDefinition $definition * @return Workflow */ protected function getAssembledWorkflow(WorkflowDefinition $definition) { $workflowName = $definition->getName(); if (!isset($this->workflowByName[$workflowName])) { $workflow = $this->workflowAssembler->assemble($definition); $this->workflowByName[$workflowName] = $workflow; } return $this->refreshWorkflow($this->workflowByName[$workflowName]); }
/** * @param string $name * @param array $configuration * @return WorkflowDefinition */ public function buildOneFromConfiguration($name, array $configuration) { $this->assertConfigurationOptions($configuration, array('label', 'entity')); $system = $this->getConfigurationOption($configuration, 'is_system', false); $startStepName = $this->getConfigurationOption($configuration, 'start_step', null); $entityAttributeName = $this->getConfigurationOption($configuration, 'entity_attribute', WorkflowConfiguration::DEFAULT_ENTITY_ATTRIBUTE); $stepsDisplayOrdered = $this->getConfigurationOption($configuration, 'steps_display_ordered', false); $workflowDefinition = new WorkflowDefinition(); $workflowDefinition->setName($name)->setLabel($configuration['label'])->setRelatedEntity($configuration['entity'])->setStepsDisplayOrdered($stepsDisplayOrdered)->setSystem($system)->setEntityAttributeName($entityAttributeName)->setConfiguration($this->filterConfiguration($configuration)); $workflow = $this->workflowAssembler->assemble($workflowDefinition, false); $this->setSteps($workflowDefinition, $workflow); $workflowDefinition->setStartStep($workflowDefinition->getStepByName($startStepName)); $this->setEntityAcls($workflowDefinition, $workflow); $this->fieldGenerator->generateWorkflowFields($workflowDefinition->getRelatedEntity()); return $workflowDefinition; }
/** * @param array $configuration */ protected function assembleWorkflow(array $configuration) { $workflow = $this->createWorkflow(); $workflowDefinition = $this->createWorkflowDefinition($configuration); $attributes = new ArrayCollection(); $steps = new ArrayCollection(); $transitions = new ArrayCollection(); $container = $this->createContainerMock($workflow, false); $configurationTree = $this->createConfigurationTreeMock($workflowDefinition); $attributeAssembler = $this->createAttributeAssemblerMock($configuration, $attributes, false); $stepAssembler = $this->createStepAssemblerMock($configuration, $attributes, $steps, false); $transitionAssembler = $this->createTransitionAssemblerMock($configuration, $steps, $transitions, false); $workflowAssembler = new WorkflowAssembler($container, $configurationTree, $attributeAssembler, $stepAssembler, $transitionAssembler); $workflowAssembler->assemble($workflowDefinition); }
/** * Assembles Workflow by WorkflowDefinition * * @param WorkflowDefinition $workflowDefinition * @return Workflow */ protected function assembleWorkflow(WorkflowDefinition $workflowDefinition) { return $this->workflowAssembler->assemble($workflowDefinition); }