public function testCloneConditionnalProcess() { $this->processCloner->initCloningVariables(); $id = "P_condProc7_"; //for var_dump identification $this->processCloner->setCloneLabel("__Clone7"); $activity1 = $this->authoringService->createActivity($this->proc, "{$id}Activity_1"); $activity1->editPropertyValues(new core_kernel_classes_Property(PROPERTY_ACTIVITIES_ISINITIAL), GENERIS_TRUE); $connector1 = $this->authoringService->createConnector($activity1); $then1 = $this->authoringService->createConditionalActivity($connector1, 'then', null, "{$id}Activity_2"); //create "Activity_2" $else1 = $this->authoringService->createConditionalActivity($connector1, 'else', null, '', true); //create another connector // $else1 = $this->authoringService->createConditionalActivity($connector1, 'else'); $this->assertEquals($connector1->getUniquePropertyValue(new core_kernel_classes_Property(PROPERTY_CONNECTORS_TYPE))->getUri(), INSTANCE_TYPEOFCONNECTORS_CONDITIONAL); $this->assertTrue($this->activityService->isActivity($then1)); $this->assertTrue($this->connectorService->isConnector($else1)); $transitionRule = $connector1->getUniquePropertyValue(new core_kernel_classes_Property(PROPERTY_CONNECTORS_TRANSITIONRULE)); $this->assertEquals($then1->getUri(), $transitionRule->getUniquePropertyValue(new core_kernel_classes_Property(PROPERTY_TRANSITIONRULES_THEN))->getUri()); $this->assertEquals($else1->getUri(), $transitionRule->getUniquePropertyValue(new core_kernel_classes_Property(PROPERTY_TRANSITIONRULES_ELSE))->getUri()); //create a sequential a $connector2 = $this->authoringService->createConnector($then1); $lastActivity = $this->authoringService->createSequenceActivity($connector2, null, "{$id}Activity_3"); //connector "else1": connect the "then" to the activity "then1" and the "else" to $then2 = $this->authoringService->createConditionalActivity($else1, 'then', $connector2); //connect to the activity $then1 $else2 = $this->authoringService->createConditionalActivity($else1, 'else', $lastActivity); //connect to the connector of the activity $then1 $this->assertEquals($then2->getUri(), $connector2->getUri()); $this->assertEquals($else2->getUri(), $lastActivity->getUri()); //clone the process now! $processClone = $this->processCloner->cloneProcess($this->proc); $this->assertIsA($processClone, 'core_kernel_classes_Resource'); $this->assertEquals(count($this->processCloner->getClonedActivities()), 3); $this->assertEquals(count($this->processCloner->getClonedConnectors()), 3); //count the number of activities in the cloned process $activities = $this->authoringService->getActivitiesByProcess($processClone); $this->assertEquals(count($activities), 3); foreach ($activities as $activity) { $this->assertTrue($this->activityService->isActivity($activity)); } $this->authoringService->deleteProcess($processClone); }