public function testGetAddTransitionRecords() { $this->assertEmpty($this->workflowItem->getTransitionRecords()->getValues()); $transitionRecord = new WorkflowTransitionRecord(); $transitionRecord->setTransitionName('test_transition'); $this->assertEquals($this->workflowItem, $this->workflowItem->addTransitionRecord($transitionRecord)); $this->assertEquals(array($transitionRecord), $this->workflowItem->getTransitionRecords()->getValues()); $this->assertEquals($this->workflowItem, $transitionRecord->getWorkflowItem()); }
/** * Get passed latest steps from step with minimum order to step with maximum order. * * @param WorkflowItem $workflowItem * @return Collection|Step[] */ public function getPassedStepsByWorkflowItem(WorkflowItem $workflowItem) { $transitionRecords = $workflowItem->getTransitionRecords(); $passedSteps = array(); if ($transitionRecords) { $minStepIdx = count($transitionRecords) - 1; $minStep = $this->stepManager->getStep($transitionRecords[$minStepIdx]->getStepTo()->getName()); $steps = array($minStep); $minStepIdx--; while ($minStepIdx > -1) { $step = $this->stepManager->getStep($transitionRecords[$minStepIdx]->getStepTo()->getName()); if ($step->getOrder() <= $minStep->getOrder() && $step->getName() != $minStep->getName()) { $minStepIdx--; $minStep = $step; $steps[] = $step; } elseif ($step->getName() == $minStep->getName()) { $minStepIdx--; } else { break; } } $passedSteps = array_reverse($steps); } return new ArrayCollection($passedSteps); }