public function testGetPreviousActivities() { /* * activity > connector1(COND) * -> THEN > thenConnector(SQ) * -> ELSE > elseConnector (SQ) * -> Act3 > connector2(PARA) * -> Act4 > connector3(JOIN) * -> Act5 > connector4(JOIN) * -> Acto6 * */ $connector1 = $this->authoringService->createConnector($this->activity); $then = $this->authoringService->createConditionalActivity($connector1, 'then'); //create "Activity_2" $thenConnector = $this->authoringService->createConnector($then, 'then Connector'); //create "Activity_2" $else = $this->authoringService->createConditionalActivity($connector1, 'else', null, '', true); //create another connector $elseConnector = $this->authoringService->createConnector($else, 'else Connector'); //create "Activity_2" $activity3 = $this->authoringService->createSequenceActivity($thenConnector, null, 'Act3'); $this->authoringService->createSequenceActivity($elseConnector, $activity3); $connector1PrevAct = $this->service->getPreviousActivities($connector1); $this->assertInternalType('array', $connector1PrevAct); $this->assertTrue(sizeof($connector1PrevAct) == 1); if (isset($connector1PrevAct[0]) && $connector1PrevAct[0] instanceof core_kernel_classes_Resource) { $this->assertTrue($connector1PrevAct[0]->getUri() == $this->activity->getUri()); } $elsePrevAct = $this->service->getPreviousActivities($elseConnector); $this->assertInternalType('array', $elsePrevAct); $this->assertTrue(sizeof($elsePrevAct) == 1); if (isset($elsePrevAct[0]) && $elsePrevAct[0] instanceof core_kernel_classes_Resource) { $this->assertTrue($elsePrevAct[0]->getUri() == $else->getUri()); } $thenPrevAct = $this->service->getPreviousActivities($thenConnector); $this->assertInternalType('array', $thenPrevAct); $this->assertTrue(sizeof($thenPrevAct) == 1); if (isset($thenPrevAct[0]) && $thenPrevAct[0] instanceof core_kernel_classes_Resource) { $this->assertTrue($thenPrevAct[0]->getUri() == $then->getUri()); } $myProcessVar1 = $this->variableService->getProcessVariable('myProcessVarCode1', true); $transitionRule = $this->authoringService->createTransitionRule($connector1, '^myProcessVarCode1 == 1'); $connector2 = $this->authoringService->createConnector($activity3); $activity4 = $this->authoringService->createActivity($this->processDefinition, 'activity4 for interactive service unit test'); $connector3 = $this->authoringService->createConnector($activity4); $activity5 = $this->authoringService->createActivity($this->processDefinition, 'activity5 for interactive service unit test'); $connector4 = $this->authoringService->createConnector($activity5); $newActivitiesArray = array($activity4->getUri() => 2, $activity5->getUri() => 3); $this->authoringService->setParallelActivities($connector2, $newActivitiesArray); $activity6 = $this->authoringService->createActivity($this->processDefinition); $connector3 = wfAuthoring_models_classes_ConnectorService::singleton()->createJoin(array($activity4, $activity5), $activity6); /* $activity6 = $this->authoringService->createJoinActivity($connector3, null, '', $activity4); $activity7 = $this->authoringService->createJoinActivity($connector4, $activity6, '', $activity5); */ $this->assertEquals(count($this->service->getNextActivities($connector2)), 2); $activity3PrevActi = $this->service->getPreviousActivities($connector2); $this->assertInternalType('array', $activity3PrevActi); $this->assertTrue(sizeof($activity3PrevActi) == 1); if (isset($activity3PrevActi[0]) && $activity3PrevActi[0] instanceof core_kernel_classes_Resource) { $this->assertTrue($activity3PrevActi[0]->getUri() == $activity3->getUri()); } $activity4PrevActi = $this->service->getPreviousSteps($connector3); $this->assertInternalType('array', $activity4PrevActi); $this->assertEquals(sizeof($activity4PrevActi), 2); $cardinalityService = wfEngine_models_classes_ActivityCardinalityService::singleton(); $prevActivitiesarrayCount = array(); foreach ($activity4PrevActi as $cardinality) { $this->assertTrue($cardinalityService->isCardinality($cardinality)); $activities = $cardinalityService->getPreviousSteps($cardinality); $this->assertEquals(count($activities), 1); $activity = current($activities); $keyExists = array_key_exists($activity->getUri(), $newActivitiesArray); $this->assertTrue($keyExists); if ($keyExists) { $prevActivitiesarrayCount[$activity->getUri()] = $cardinalityService->getCardinality($cardinality); } } $this->assertEquals($prevActivitiesarrayCount, $newActivitiesArray); $then->delete(true); $else->delete(true); $activity3->delete(true); $activity4->delete(true); $activity5->delete(true); $activity6->delete(true); $transitionRule->delete(true); $connector1->delete(true); $connector2->delete(true); $connector3->delete(true); $connector4->delete(true); }