コード例 #1
0
 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());
 }
コード例 #2
0
ファイル: Workflow.php プロジェクト: ramunasd/platform
 /**
  * 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);
 }