/** * Get the ServiceCall object representing how to call the current Assessment Item to be * presented to a candidate in a given Assessment Test $session. * * @param AssessmentTestSession $session An AssessmentTestSession Object. * @param string $testDefinition URI The URI of the knowledge base resource representing the folder where the QTI Test Definition is stored. * @param string $testCompilation URI The URI of the knowledge base resource representing the folder where the QTI Test Compilation is stored. * @return tao_models_classes_service_ServiceCall A ServiceCall object. */ public static function buildItemServiceCall(AssessmentTestSession $session, $testDefinitionUri, $testCompilationUri) { $href = $session->getCurrentAssessmentItemRef()->getHref(); // retrive itemUri & itemPath. $parts = explode('|', $href); $definition = new core_kernel_classes_Resource(INSTANCE_QTITEST_ITEMRUNNERSERVICE); $serviceCall = new tao_models_classes_service_ServiceCall($definition); $uriResource = new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_ITEMURI); $uriParam = new tao_models_classes_service_ConstantParameter($uriResource, $parts[0]); $serviceCall->addInParameter($uriParam); $pathResource = new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_ITEMPATH); $pathParam = new tao_models_classes_service_ConstantParameter($pathResource, $parts[1]); $serviceCall->addInParameter($pathParam); $dataPathResource = new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_ITEMDATAPATH); $dataPathParam = new tao_models_classes_service_ConstantParameter($dataPathResource, $parts[2]); $serviceCall->addInParameter($dataPathParam); $parentServiceCallIdResource = new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_QTITESTITEMRUNNER_PARENTCALLID); $parentServiceCallIdParam = new tao_models_classes_service_ConstantParameter($parentServiceCallIdResource, $session->getSessionId()); $serviceCall->addInParameter($parentServiceCallIdParam); $testDefinitionResource = new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_QTITEST_TESTDEFINITION); $testDefinitionParam = new tao_models_classes_service_ConstantParameter($testDefinitionResource, $testDefinitionUri); $serviceCall->addInParameter($testDefinitionParam); $testCompilationResource = new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_QTITEST_TESTCOMPILATION); $testCompilationParam = new tao_models_classes_service_ConstantParameter($testCompilationResource, $testCompilationUri); $serviceCall->addInParameter($testCompilationParam); return $serviceCall; }
private function buildCompiledDelivery(core_kernel_classes_Resource $delivery, core_kernel_classes_Resource $workflow) { $directory = $this->getCompilationDirectory($delivery); $this->replaceItemRunner($workflow, $directory); $serviceCall = new tao_models_classes_service_ServiceCall(new core_kernel_classes_Resource(INSTANCE_SERVICE_PROCESSRUNNER)); $param = new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_PROCESSDEFINITION), $workflow); $serviceCall->addInParameter($param); $compilationClass = new core_kernel_classes_Class(CLASS_COMPILEDDELIVERY); $compilationInstance = $compilationClass->createInstanceWithProperties(array(RDFS_LABEL => $delivery->getLabel(), PROPERTY_COMPILEDDELIVERY_DELIVERY => $delivery, PROPERTY_COMPILEDDELIVERY_FOLDER => $directory, PROPERTY_COMPILEDDELIVERY_TIME => time(), PROPERTY_COMPILEDDELIVERY_RUNTIME => $serviceCall->toOntology())); return $compilationInstance; }
function compile() { $content = $this->getResource()->getUniquePropertyValue(new core_kernel_classes_Property(TEST_TESTCONTENT_PROP)); $ltiLaunchUrl = $content->getOnePropertyValue(new core_kernel_classes_Property(PROPERTY_LTI_LINK_LAUNCHURL)); $ltiLinkConsumer = $content->getOnePropertyValue(new core_kernel_classes_Property(PROPERTY_LTI_LINK_CONSUMER)); if (empty($ltiLaunchUrl)) { throw new tao_models_classes_CompilationFailedException('Missing launch Url for test ' . $this->getResource()->getUri()); } if (empty($ltiLinkConsumer)) { throw new tao_models_classes_CompilationFailedException('Missing LTI consumer for test ' . $this->getResource()->getUri()); } // Build the service call. $service = new tao_models_classes_service_ServiceCall(new core_kernel_classes_Resource(INSTANCE_LTI_CONSUMER_SERVICE)); $param = new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_LTI_LAUNCH_URL), $ltiLaunchUrl); $service->addInParameter($param); $param = new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_LTI_CONSUMER), $ltiLinkConsumer->getUri()); $service->addInParameter($param); common_Logger::d("LTI Test successfully compiled."); return $service; }
/** * (non-PHPdoc) * @see tao_models_classes_Compiler::compile() */ public function compile() { $report = new common_report_Report(common_report_Report::TYPE_SUCCESS, __('Published test "%s"', $this->getResource()->getLabel())); common_ext_ExtensionsManager::singleton()->getExtensionById('taoWfTest'); // loads the extension $test = $this->getResource(); common_Logger::i('Compiling test ' . $test->getLabel() . ' items'); $process = $test->getUniquePropertyValue(new core_kernel_classes_Property(TEST_TESTCONTENT_PROP)); if (count(wfEngine_models_classes_ProcessDefinitionService::singleton()->getAllActivities($process)) == 0) { return new common_report_Report(common_report_Report::TYPE_ERROR, __('An empty test cannot be published.')); } $processCloner = new wfAuthoring_models_classes_ProcessCloner(); try { $processClone = $processCloner->cloneProcess($process); $report->add(new common_report_Report(common_report_Report::TYPE_SUCCESS, __('Cloned the process %s', $process->getLabel()))); $itemsServiceReport = $this->process($processClone); foreach ($itemsServiceReport as $subReport) { $report->add($subReport); } if ($itemsServiceReport->getType() == common_report_Report::TYPE_SUCCESS) { $serviceCall = new tao_models_classes_service_ServiceCall(new core_kernel_classes_Resource(INSTANCE_SERVICE_PROCESSRUNNER)); $param = new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_PROCESSDEFINITION), $processClone->getUri()); $serviceCall->addInParameter($param); $report->setData($serviceCall); } else { $report->setType(common_report_Report::TYPE_ERROR); } } catch (common_Exception $e) { $report->add(new common_report_Report(common_report_Report::TYPE_ERROR, __('Failed to clone the process'))); $report->setType(common_report_Report::TYPE_ERROR); } if ($report->getType() != common_report_Report::TYPE_SUCCESS) { $report->setMessage(__('Failed to publish test "%s".', $this->getResource()->getLabel())); } return $report; }
/** * Create the item's ServiceCall. * * @param core_kernel_classes_Resource $item * @param tao_models_classes_service_StorageDirectory $destinationDirectory * @return tao_models_classes_service_ServiceCall */ protected function createService(core_kernel_classes_Resource $item, tao_models_classes_service_StorageDirectory $destinationDirectory) { $service = new tao_models_classes_service_ServiceCall(new core_kernel_classes_Resource(INSTANCE_SERVICE_ITEMRUNNER)); $service->addInParameter(new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_ITEMPATH), $destinationDirectory->getId())); $service->addInParameter(new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_ITEMURI), $item)); return $service; }
/** * Build the Service Call definition that makes TAO able to run the compiled test * later on at delivery time. * * @return tao_models_classes_service_ServiceCall */ protected function buildServiceCall() { $service = new tao_models_classes_service_ServiceCall(new core_kernel_classes_Resource(INSTANCE_QTITEST_TESTRUNNERSERVICE)); $param = new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_QTITEST_TESTDEFINITION), $this->getResource()); $service->addInParameter($param); $param = new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_QTITEST_TESTCOMPILATION), $this->getPrivateDirectory()->getId() . '|' . $this->getPublicDirectory()->getId()); $service->addInParameter($param); return $service; }
protected function createLinearSuperProcess($processes) { $processDefinitionClass = new core_kernel_classes_Class(CLASS_PROCESS); $processDefinition = $processDefinitionClass->createInstance('process for ' . __CLASS__); $this->assertIsA($processDefinition, 'core_kernel_classes_Resource'); $activityService = wfAuthoring_models_classes_ActivityService::singleton(); $connectorService = wfAuthoring_models_classes_ConnectorService::singleton(); $processRunnerService = new core_kernel_classes_Resource(INSTANCE_SERVICE_PROCESSRUNNER); $processRunnerParam = new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_PROCESSDEFINITION); $last = null; foreach ($processes as $subProcess) { $serviceCall = new tao_models_classes_service_ServiceCall($processRunnerService); $serviceCall->addInParameter(new tao_models_classes_service_ConstantParameter($processRunnerParam, $subProcess)); $current = $activityService->createActivity($processDefinition); $current->setPropertyValue(new core_kernel_classes_Property(PROPERTY_ACTIVITIES_INTERACTIVESERVICES), $serviceCall->toOntology()); if (is_null($last)) { $current->editPropertyValues(new core_kernel_classes_Property(PROPERTY_ACTIVITIES_ISINITIAL), GENERIS_TRUE); } else { $connectorService->createSequential($last, $current); } $last = $current; } return $processDefinition; }