processManager = null; $this->acl = null; $this->run_activity = null; } private function getCurrentProcessID() { if (!is_null($GLOBALS['workflow']['wf_runtime']->activity)) return (int) $GLOBALS['workflow']['wf_runtime']->activity->getProcessId(); if (isset($GLOBALS['workflow']['job'])) return (int) $GLOBALS['workflow']['job']['processID']; return false; } private function checkProcessAccess($processID) { $processID = (int) $processID; return ($processID === $this->getCurrentProcessID()); } /** * Busca informações de um (ou mais) processo(s). * @param mixed $pids Uma array de IDs de processo ou um inteiro representando o ID de um processo. * @return array Informações sobre o(s) processo(s). * @access public */ function getProcess($pids) { if (!is_array($pids)) $pids = array($pids); $flagObject[0] = is_null($this->processManager); if ($flagObject[0]) $this->processManager = Factory::getInstance('workflow_processmanager'); $output = array(); foreach ($pids as $pid) $output[] = $this->processManager->get_process($pid, false); if ($flagObject[0]) $this->processManager = null; return $output; } /** * Dá seqüência no fluxo de uma instância (simula ação do usuário). * @param int $activityID O ID da atividade da instância. * @param int $instanceID O ID da instância. * @return bool true caso a instância tenha sido continuada e false caso contrário. * @access public * @deprecated 1.7.00.000 */ function continueInstance($activityID, $instanceID) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->continueInstance($activityID, $instanceID); } /** * Aborta uma instância * @param int $instanceID O ID da instância. * @return boolean true se foi possível abortar a instância e false caso contrário. * @access public * @deprecated 1.7.00.000 */ function abortInstance($instanceID) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->abort($instanceID); } /** * Define o nome (identificador) de uma instância * @param int $instanceID O ID da instância. * @param string $name O novo nome da instância. * @return boolean true se foi possível mudar o nome da instância e false caso contrário. * @access public * @deprecated 1.7.00.000 */ function setInstanceName($instanceID, $name) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->setName($instanceID, $name); } /** * Define a prioridade de uma instância * @param int $instanceID O ID da instância. * @param int $priority A nova prioridade da instância * @return boolean true se foi possível mudar a prioridade da instância e false caso contrário. * @access public * @deprecated 1.7.00.000 */ function setInstancePriority($instanceID, $priority) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->setPriority($instanceID, $priority); } /** * Busca instâncias abandonadas. * @param int $numberOfDays O tempo (em dias) em que a instância está abandonada. * @param array $activities Uma lista de atividades das quais se quer as instâncias abandonadas (também pode ser um valor inteiro). * @return array As instâncias que satisfazem o critério de seleção. * @access public * @deprecated 1.7.00.000 */ function getIdleInstances($numberOfDays, $activities = null) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->getIdle($numberOfDays, $activities); } /** * Busca todas as instâncias. * @param array $activities Uma lista de atividades das quais se quer as instâncias (também pode ser um valor inteiro). * @return array As instâncias que satisfazem o critério de seleção. * @access public * @deprecated 1.7.00.000 */ function getInstances($activities = null) { return $this->getIdleInstances(0, $activities); } /** * Busca todas as instâncias que possuem esse nome (identificador). * @param string $name O nome da instância que se quer encontrar. * @return array As instâncias que satisfazem o critério de seleção. * @access public * @deprecated 1.7.00.000 */ function getInstancesByName($name) { $WFInstance = &Factory::getInstance('wf_instance'); $preOutput = $WFInstance->getByName($name); $output = array(); foreach ($preOutput as $childInstance) if (!is_null($childInstance['wf_activity_id'])) $output[] = $childInstance; return $output; } /** * Busca as instâncias filhas de uma instância * Se os parâmetros não forem informados, retorna instâncias filhas das instância atual. * @param int $instanceID O ID da instância pai (não obrigatório). * @param int $activityID O ID da atividade corrente da instância pai * @return array As instâncias filhas do par instância/atividade atual * @access public * @deprecated 1.7.00.000 */ function getChildInstances($instanceID = null, $activityID = null) { $WFInstance = &Factory::getInstance('wf_instance'); $preOutput = $WFInstance->getChildren($instanceID); $output = array(); foreach ($preOutput as $childInstance) if (!is_null($childInstance['wf_activity_id'])) $output[] = $childInstance; return $output; } /** * Busca as propriedades de uma instância (do mesmo processo). * @param int $instanceID O ID da instância. * @return mixed Uma array contento as propriedades da instância (no formato "nome_da_propriedade" => "valor"). Ou false em caso de erro. * @access public * @deprecated 1.7.00.000 */ function getInstanceProperties($instanceID) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->getProperties($instanceID); } /** * Busca as propriedades de uma instância filha. * @param int $instanceID O ID da instância filha. * @return array Propriedades da instância filha. Array no formato "nome_da_propriedade" => "valor". * @access public * @deprecated 1.7.00.000 */ function getChildInstanceProperties($instanceID) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->getProperties($instanceID); } /** * Busca os recursos que um usuário pode administrar. * @param string $type Tipo do recurso ("PRO", "MON, etc.). * @param int $uid O usuário do qual se quer obter informações de administração de recursos. * @return array IDs dos recursos ao qual o usuário tem acesso. * @access public */ function getUserPermissions($type, $uid) { $flagObject[0] = is_null($this->acl); if ($flagObject[0]) $this->acl = Factory::getInstance('workflow_acl'); $output = $this->acl->getUserPermissions($type, $uid); if ($flagObject[0]) $this->acl = null; return $output; } /** * Busca os recursos que um usuário pode administrar (inclusive faz verificação de acordo com permissões advindas de grupos). * @param string $type Tipo do recurso ("PRO", "MON, etc.). * @param int $uid O usuário do qual se quer obter informações de administração de recursos. * @return array IDs dos recursos ao qual o usuário tem acesso. * @access public */ function getUserGroupPermissions($type, $uid) { $flagObject[0] = is_null($this->acl); if ($flagObject[0]) $this->acl = Factory::getInstance('workflow_acl'); $output = $this->acl->getUserGroupPermissions($type, $uid); if ($flagObject[0]) $this->acl = null; return $output; } /** * Traz informações sobre uma atividade a partir de seu ID * @param int $activityID O ID da atividade * @return mixed Uma array associativa contendo as informações sobre a atividade ou false caso a atividade não seja encontrada * @access public */ function getActivityInformationByID($activityID) { $activityID = (int) $activityID; $processID = $this->getCurrentProcessID(); /* build the SQL query */ $query = "SELECT wf_activity_id, wf_name, wf_normalized_name, wf_type, wf_description FROM egw_wf_activities WHERE (wf_activity_id = ?) AND (wf_p_id = ?)"; $db = &Factory::getInstance('WorkflowObjects')->getDBGalaxia()->Link_ID; $resultSet = $db->query($query, array($activityID, $processID)); /* return the data */ if (($row = $resultSet->fetchRow())) return array( 'activity_id' => $row['wf_activity_id'], 'name' => $row['wf_name'], 'normalized_name' => $row['wf_normalized_name'], 'type' => $row['wf_type'], 'description' => $row['wf_description'] ); else return false; } /** * Traz informações sobre uma atividade a partir de seu nome * @param int $activityName O nome da atividade * @return mixed Uma array associativa contendo as informações sobre a atividade ou false caso a atividade não seja encontrada * @access public */ function getActivityInformationByName($activityName) { $processID = $this->getCurrentProcessID(); /* build the SQL query */ $query = "SELECT wf_activity_id, wf_name, wf_normalized_name, wf_type, wf_description FROM egw_wf_activities WHERE (wf_name = ?) AND (wf_p_id = ?)"; $db = &Factory::getInstance('WorkflowObjects')->getDBGalaxia()->Link_ID; $resultSet = $db->query($query, array($activityName, $processID)); /* return the data */ if (($row = $resultSet->fetchRow())) return array( 'activity_id' => $row['wf_activity_id'], 'name' => $row['wf_name'], 'normalized_name' => $row['wf_normalized_name'], 'type' => $row['wf_type'], 'description' => $row['wf_description'] ); else return false; } /** * Busca as instância de usuários de acordo com alguns critérios * @param mixed $users Um array com IDs de usuários ou perfis (no caso de perfis, deve-se prefixar seu ID com o caractere 'p'). Também pode possuir um único ID (seja de usuário ou de perfil) * @param mixed $activities Um array com IDs de atividades das se quer as instâncias. Também pode ser um inteiro, representando um único ID. Caso possua valor null, o resultado não é filtrado de acordo com as atividades (parâmetro opcional) * @param mixed $status Um array com os status requeridos (para filtrar as instâncias). Também pode ser uma string, representando um único status. Caso possua valor null, o resultado não é filtrado de acordo com o status. Os status podem ser: completed, active, aborted e exception (parâmetro opcional) * @return array As instâncias que satisfazem o critério de seleção. * @access public * @deprecated 1.7.00.000 */ function getUserInstances($users, $activities = null, $status = null) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->getByUser($users, $activities, $status); } /** * Seta uma propriedade de uma instância. * @param int $instanceID O ID da instância. * @return bool true caso a propriedade tenha sido alterada com sucesso * @access public * @deprecated 1.7.00.000 */ function setInstanceProperty($instanceID, $nameProperty, $value) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->setProperty($instanceID, $nameProperty, $value); } /** * Verifica se um dado usuário tem acesso a uma instância * @param int $userID O ID do usuário que se quer verificar * @param int $instanceID O ID da instância * @param int $activityID O ID da atividade onde a instância está * @param bool $writeAccess Se true, indica que é necessário que o usuário tenha acesso para modificar a instância (dar seqüência ao fluxo). Se false, não será verificado se o usuário tem permissão de escrita na instância * @return bool true se o usuário tiver acesso à instância (levando em consideração $writeAccess) ou false caso contrário * @access public * @deprecated 1.7.00.000 */ function checkUserAccessToInstance($userID, $instanceID, $activityID, $writeAccess = true) { $WFInstance = &Factory::getInstance('wf_instance'); return $WFInstance->checkUserAccess($userID, $instanceID, $activityID, $writeAccess); } } ?>