parameters = unserialize(base64_decode($parameters)); $this->parameters['currentDate'] = new DateTime($this->parameters['currentDate']); $this->jobManager =& Factory::getInstance('WorkflowJobManager'); } /** * Indica que a execução do Job falhou (este Status de falha implica que o Job não foi executado). Após a execução deste método, a execução do PHP é encerrada * @param string $message A mensagem que será armazenada * @return void * @access private */ private function fail($message) { $this->jobManager->writeLog($this->parameters['jobID'], $this->parameters['currentDate'], $message, JobManager::STATUS_FAIL); exit; } /** * Executa o Job * @return void * @access public */ public function run() { /* activate the security policy */ Factory::getInstance('WorkflowSecurity')->enableSecurityPolicy(); /** * Since all jobs must run in process mode, e. g. it's user code, * we must enable the security. */ Security::enable(); if (!file_exists($this->parameters['file'])) $this->fail('Arquivo contendo o código do Job não foi encontrado'); require_once dirname(__FILE__) . '/local/classes/class.JobBase.php'; require_once $this->parameters['file']; if (!class_exists($this->parameters['className'])) $this->fail('A classe "' . $this->parameters['className'] . '" não foi encontrada'); $job = new $this->parameters['className']($this->parameters['jobID'], $this->parameters['processID'], $this->parameters['currentDate'], $this->parameters['testMode'], $this->parameters['maximumExecutionTime']); if (!is_subclass_of($job, 'JobBase')) $this->fail('A classe "' . $this->parameters['className'] . '" não está estendendo a classe JobBase'); $GLOBALS['workflow']['job']['processID'] = $this->parameters['processID']; $job->run(); $job->finalize(); } } /* esta classe só pode ser executada a partir da linha de comando. * Além disso, ela exige um parâmetro (que é uma string serializada e codificada em base64) */ if ((php_sapi_name() !== 'cli') || (!isset($argv[1]))) exit; require_once 'common.inc.php'; Factory::getInstance('WorkflowMacro')->prepareEnvironment(); $jobRunner = &Factory::newInstance('JobRunner', $argv[1]); $jobRunner->run(); ?>