getInstance('WorkflowMacro')->prepareEnvironment(); $this->jobID = $jobID; $this->processID = $processID; $this->currentDate = $currentDate; $this->jobManager = &$GLOBALS['workflow']['factory']->getInstance('WorkflowJobManager'); $this->testMode = $testMode; $this->maximumExecutionTime = $maximumExecutionTime; $this->timeStart = microtime(true); $this->userLog = false; $this->prepareEnvironment(); } /** * Indica que a execução do Job falhou * @param string $message A mensagem que será armazenada * @return void * @final * @access public */ final public function fail($message) { $this->jobManager->writeLog($this->jobID, $this->currentDate, $message, JobManager::STATUS_JOB_FAIL); $this->userLog = true; } /** * Indica que a execução do Job foi bem sucedida * @param string $message A mensagem que será armazenada * @return void * @final * @access public */ final public function success($message) { $this->jobManager->writeLog($this->jobID, $this->currentDate, $message, JobManager::STATUS_JOB_SUCCESS); $this->userLog = true; } /** * Grava uma mensagem de log padrão (caso o desenvolvedor não chame os métodos "fail" ou "success") * @return void * @final * @access private */ final private function defaultLog() { $this->jobManager->writeLog($this->jobID, $this->currentDate, 'Job executado', JobManager::STATUS_UNKNOWN); $this->userLog = true; } /** * Prepara o ambiente para a execução do Job * @return void * @final * @access private */ final private function prepareEnvironment() { $GLOBALS['workflow']['factory']->getInstance('WorkflowMacro')->prepareProcessEnvironment($this->processID); require_once PHPGW_SERVER_ROOT . '/workflow/inc/class.process_factory.inc.php'; $this->environment = array(); $this->environment['factory'] = &new ProcessFactory(); } /** * Procedimentos que são executados na finalização do Job * @return void * @final * @access private */ final public function finalize() { if (!$this->userLog) $this->defaultLog(); } /** * Pega o tempo de execução do Job (até o momento) * @return float O tempo de execução do Job * @final * @access public */ final public function getExecutionTime() { return microtime(true) - $this->timeStart; } /** * Pega o tempo máximo de execução do Job * @return float O tempo máximo de execução do Job * @final * @access public */ final public function getMaximumExectuionTime() { return $this->maximumExecutionTime; } /** * É o método que contém o código do Job que será executado * @return void * @abstract * @access public */ abstract public function run(); } ?>