/**
  * Funkce pro definování úlohy na základě dat z EasyMineru
  * @return TaskState
  * @throws \Exception
  */
 public function startMining()
 {
     #region kontrola zadání úlohy v JSONu
     $taskSettingsJson = new TaskSettingsJson($this->task->taskSettingsJson);
     $this->checkRequiredIMs($taskSettingsJson);
     $this->task->setTaskSettings($taskSettingsJson->getJsonData());
     #endregion
     //serializace zadání v PMML
     $cloudDriverGuhaPmmlSerializer = $this->xmlSerializersFactory->createCloudDriverGuhaPmmlSerializer($this->task);
     $cloudDriverGuhaPmmlSerializer->appendTaskSettings();
     $pmml = $cloudDriverGuhaPmmlSerializer->getPmml();
     //import úlohy a spuštění dolování...
     $numRequests = 1;
     sendStartRequest:
     try {
         #region pracovní zjednodušený request
         $response = self::curlRequestResponse($this->getRemoteMinerUrl() . '/mine', $pmml->asXML(), $this->getApiKey(), $responseCode);
         $taskState = $this->parseResponse($response, $responseCode);
         #endregion
     } catch (\Exception $e) {
         if (++$numRequests < self::MAX_MINING_REQUESTS) {
             sleep(self::REQUEST_DELAY);
             goto sendStartRequest;
         }
     }
     if (!empty($taskState)) {
         return $taskState;
     } else {
         throw new \Exception('Task import failed!');
     }
 }
 /**
  * Funkce inicializující PmmlSerializer za využití konfigurace úlohy
  * @param Task $task
  * @param bool $includeFrequencies=true
  * @return GuhaPmmlSerializer
  */
 private function initPmmlSerializer(Task $task, $includeFrequencies = true)
 {
     $pmmlSerializer = $this->xmlSerializersFactory->createGuhaPmmlSerializer($task, null);
     $pmmlSerializer->appendTaskSettings();
     $pmmlSerializer->appendDataDictionary($includeFrequencies);
     $pmmlSerializer->appendTransformationDictionary($includeFrequencies);
     return $pmmlSerializer;
 }
 /**
  * Funkce pro vytvoření PMML z konkrétní úlohy
  * @param Task $task
  * @return string
  */
 private function prepareTaskPmml(Task $task)
 {
     $pmmlSerializer = $this->xmlSerializersFactory->createGuhaPmmlSerializer($task, null);
     $pmmlSerializer->appendTaskSettings();
     $pmmlSerializer->appendDataDictionary(false);
     $pmmlSerializer->appendTransformationDictionary(false);
     $pmmlSerializer->appendRules();
     return $pmmlSerializer->getPmml()->asXML();
 }
 /**
  * @param Task $task
  * @param bool $includeFrequencies=true
  * @return \SimpleXMLElement
  */
 private function prepareTaskGuhaPmml(Task $task, $includeFrequencies = true)
 {
     /** @var Metasource $metasource */
     $pmmlSerializer = $this->xmlSerializersFactory->createGuhaPmmlSerializer($task, null);
     $pmmlSerializer->appendTaskSettings();
     $pmmlSerializer->appendDataDictionary($includeFrequencies);
     $pmmlSerializer->appendTransformationDictionary($includeFrequencies);
     $pmmlSerializer->appendRules();
     return $pmmlSerializer->getPmml();
 }
Пример #5
0
 /**
  * Funkce pro definování úlohy na základě dat z EasyMineru
  * @return TaskState
  */
 public function startMining()
 {
     $pmmlSerializer = $this->xmlSerializersFactory->createGuhaPmmlSerializer($this->task);
     $taskSettingsSerializer = new TaskSettingsSerializer($pmmlSerializer->getPmml());
     $pmml = $taskSettingsSerializer->settingsFromJson($this->task->taskSettingsJson);
     //import úlohy a spuštění dolování...
     $numRequests = 1;
     sendRequest:
     $result = $this->queryPost($pmml, array('template' => self::PMML_LM_TEMPLATE));
     $ok = strpos($result, 'kbierror') === false && !preg_match('/status=\\"failure\\"/', $result);
     if (++$numRequests < self::MAX_MINING_REQUESTS && !$ok) {
         sleep(self::REQUEST_DELAY);
         goto sendRequest;
     }
     $taskState = $this->parseTaskState($result);
     if ($taskState->rulesCount > 0) {
         try {
             $this->parseRulesPMML($result);
         } catch (\Exception $e) {
         }
     }
     return $taskState;
 }