Programming Language PHP
Namespace Oro\Bundle\WorkflowBundle\Entity
Class WorkflowDefinition
Total Examples 12
12 code examples of PHP Oro\Bundle\WorkflowBundle\Entity\WorkflowDefinition extracted from open source projects
private function assertObjectsDefinitions(
WorkflowDefinition $definition1,
WorkflowDefinition $definition2,
bool $isCopy = false
) {
if ($isCopy) {
$testDefinition = $definition2;
} else {
$testDefinition = $definition1;
}
foreach ($definition1->getSteps() as $item) {
$this->assertSame($definition1, $item->getDefinition());
}
foreach ($definition2->getSteps() as $item) {
$this->assertSame($testDefinition, $item->getDefinition());
}
foreach ($definition1->getEntityAcls() as $item) {
$this->assertSame($definition1, $item->getDefinition());
}
foreach ($definition2->getEntityAcls() as $item) {
$this->assertSame($testDefinition, $item->getDefinition());
}
foreach ($definition1->getRestrictions() as $item) {
$this->assertSame($definition1, $item->getDefinition());
}
foreach ($definition2->getRestrictions() as $item) {
$this->assertSame($testDefinition, $item->getDefinition());
}
}
private function assertObjectsDefinitions(
WorkflowDefinition $definition1,
WorkflowDefinition $definition2,
bool $isCopy = false
) {
if ($isCopy) {
$testDefinition = $definition2;
} else {
$testDefinition = $definition1;
}
foreach ($definition1->getSteps() as $item) {
$this->assertSame($definition1, $item->getDefinition());
}
foreach ($definition2->getSteps() as $item) {
$this->assertSame($testDefinition, $item->getDefinition());
}
foreach ($definition1->getEntityAcls() as $item) {
$this->assertSame($definition1, $item->getDefinition());
}
foreach ($definition2->getEntityAcls() as $item) {
$this->assertSame($testDefinition, $item->getDefinition());
}
foreach ($definition1->getRestrictions() as $item) {
$this->assertSame($definition1, $item->getDefinition());
}
foreach ($definition2->getRestrictions() as $item) {
$this->assertSame($testDefinition, $item->getDefinition());
}
}
private function assertObjectsDefinitions(
WorkflowDefinition $definition1,
WorkflowDefinition $definition2,
bool $isCopy = false
) {
if ($isCopy) {
$testDefinition = $definition2;
} else {
$testDefinition = $definition1;
}
foreach ($definition1->getSteps() as $item) {
$this->assertSame($definition1, $item->getDefinition());
}
foreach ($definition2->getSteps() as $item) {
$this->assertSame($testDefinition, $item->getDefinition());
}
foreach ($definition1->getEntityAcls() as $item) {
$this->assertSame($definition1, $item->getDefinition());
}
foreach ($definition2->getEntityAcls() as $item) {
$this->assertSame($testDefinition, $item->getDefinition());
}
foreach ($definition1->getRestrictions() as $item) {
$this->assertSame($definition1, $item->getDefinition());
}
foreach ($definition2->getRestrictions() as $item) {
$this->assertSame($testDefinition, $item->getDefinition());
}
}
protected function processConfiguration(TranslationProcessor $processor, WorkflowDefinition $definition)
{
$sourceConfiguration = array_merge(
$definition->getConfiguration(),
[
'name' => $definition->getName(),
'label' => $definition->getLabel(),
]
);
$preparedConfiguration = $processor->prepare($definition->getName(), $processor->handle($sourceConfiguration));
if (isset($preparedConfiguration[WorkflowConfiguration::NODE_STEPS])) {
$this->setWorkflowdefinitionSteps($definition, $preparedConfiguration[WorkflowConfiguration::NODE_STEPS]);
}
$definition->setLabel($preparedConfiguration['label']);
unset($preparedConfiguration['label'], $preparedConfiguration['name']);
$definition->setConfiguration($preparedConfiguration);
}
protected function processConfiguration(TranslationProcessor $processor, WorkflowDefinition $definition)
{
$sourceConfiguration = array_merge(
$definition->getConfiguration(),
[
'name' => $definition->getName(),
'label' => $definition->getLabel(),
]
);
$preparedConfiguration = $processor->prepare($definition->getName(), $processor->handle($sourceConfiguration));
if (isset($preparedConfiguration[WorkflowConfiguration::NODE_STEPS])) {
$this->setWorkflowdefinitionSteps($definition, $preparedConfiguration[WorkflowConfiguration::NODE_STEPS]);
}
$definition->setLabel($preparedConfiguration['label']);
unset($preparedConfiguration['label'], $preparedConfiguration['name']);
$definition->setConfiguration($preparedConfiguration);
}
public function updateWorkflowVariables(WorkflowDefinition $definition, WorkflowData $data): WorkflowDefinition
{
$workflowConfig = $definition->getConfiguration();
$variableDefinitionsConfig = $workflowConfig[WorkflowConfiguration::NODE_VARIABLE_DEFINITIONS];
$variablesConfig = $variableDefinitionsConfig[WorkflowConfiguration::NODE_VARIABLES];
foreach ($data as $name => $value) {
if (!isset($variablesConfig[$name])) {
continue;
}
$variablesConfig[$name]['value'] = $value;
}
$variableDefinitionsConfig[WorkflowConfiguration::NODE_VARIABLES] = $variablesConfig;
$workflowConfig[WorkflowConfiguration::NODE_VARIABLE_DEFINITIONS] = $variableDefinitionsConfig;
$definition->setConfiguration($workflowConfig);
$this->process($definition);
return $definition;
}
private static function copyRestrictions(WorkflowDefinition $definition): ArrayCollection
{
$newsRestrictions = new ArrayCollection();
foreach ($definition->getRestrictions() as $restriction) {
$newsRestriction = new WorkflowRestriction();
$newsRestriction->setDefinition($definition)->import($restriction);
$newsRestrictions->add($newsRestriction);
}
return $newsRestrictions;
}
private static function copyEntityAcls(WorkflowDefinition $definition): ArrayCollection
{
$newEntityAcls = new ArrayCollection();
foreach ($definition->getEntityAcls() as $entityAcl) {
$newEntityAcl = new WorkflowEntityAcl();
$newEntityAcl->setDefinition($definition)->import($entityAcl);
$newEntityAcls->add($newEntityAcl);
}
return $newEntityAcls;
}
/**
* Collects init context of all start transitions.
*/
private function processInitContext(Workflow $workflow, WorkflowDefinition $definition)
{
$initData = [];
foreach ($workflow->getTransitionManager()->getStartTransitions() as $startTransition) {
foreach ($startTransition->getInitEntities() as $entity) {
$initData[WorkflowConfiguration::NODE_INIT_ENTITIES][$entity][] = $startTransition->getName();
}
foreach ($startTransition->getInitRoutes() as $route) {
$initData[WorkflowConfiguration::NODE_INIT_ROUTES][$route][] = $startTransition->getName();
}
foreach ($startTransition->getInitDatagrids() as $datagrid) {
$initData[WorkflowConfiguration::NODE_INIT_DATAGRIDS][$datagrid][] = $startTransition->getName();
}
}
$definition->setConfiguration(array_merge($definition->getConfiguration(), $initData));
}
private function setEntityRestrictions(WorkflowDefinition $workflowDefinition, Workflow $workflow)
{
$restrictions = $workflow->getRestrictions();
$workflowRestrictions = [];
foreach ($restrictions as $restriction) {
$workflowRestriction = new WorkflowRestriction();
$workflowRestriction
->setField($restriction->getField())
->setAttribute($restriction->getAttribute())
->setEntityClass($restriction->getEntity())
->setMode($restriction->getMode())
->setValues($restriction->getValues())
->setStep($workflowDefinition->getStepByName($restriction->getStep()));
$workflowRestrictions[] = $workflowRestriction;
}
$workflowDefinition->setRestrictions($workflowRestrictions);
}
private function setEntityAcls(WorkflowDefinition $workflowDefinition, Workflow $workflow)
{
$entityAcls = [];
foreach ($workflow->getAttributeManager()->getEntityAttributes() as $attribute) {
foreach ($workflow->getStepManager()->getSteps() as $step) {
$updatable = $attribute->isEntityUpdateAllowed()
&& $step->isEntityUpdateAllowed($attribute->getName());
$deletable = $attribute->isEntityDeleteAllowed()
&& $step->isEntityDeleteAllowed($attribute->getName());
if (!$updatable || !$deletable) {
$entityAcl = new WorkflowEntityAcl();
$entityAcl
->setAttribute($attribute->getName())
->setStep($workflowDefinition->getStepByName($step->getName()))
->setEntityClass($attribute->getOption('class'))
->setUpdatable($updatable)
->setDeletable($deletable);
$entityAcls[] = $entityAcl;
}
}
}
$workflowDefinition->setEntityAcls($entityAcls);
}
private function setSteps(WorkflowDefinition $workflowDefinition, Workflow $workflow)
{
$workflowSteps = [];
foreach ($workflow->getStepManager()->getSteps() as $step) {
$workflowStep = new WorkflowStep();
$workflowStep
->setName($step->getName())
->setLabel($step->getLabel())
->setStepOrder($step->getOrder())
->setFinal($step->isFinal());
$workflowSteps[] = $workflowStep;
}
$workflowDefinition->setSteps($workflowSteps);
}