Changeset 1437


Ignore:
Timestamp:
09/21/09 15:43:06 (15 years ago)
Author:
rufino
Message:

Ticket #643 - Implementado metodo createNewInstance que cria uma instancia a partir de uma atividade start.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/workflow/inc/local/classes/class.JobBase.php

    r795 r1437  
    191191 
    192192        /** 
     193         * Cria uma nova instância do processo e encaminha para a próxima atividade 
     194         * @param int $startActivityId ID da atividade Start que será usada para criar a instância 
     195         * @param string $instanceName Identificador da instância 
     196         * @param array $properties Array associativo contendo as popriedades da instância 
     197         * @param int $user uidNumer do usuário do dono da instância (usuário que gerou a instância) 
     198         * @return bool true se a instância foi criada, caso contrário, false. 
     199         * @final 
     200         * @access public 
     201         */ 
     202        final public function createNewInstance($startActivityId, $instanceName=false, $properties=false, $user=false) 
     203        { 
     204                $activityManager = CreateObject('workflow.workflow_activitymanager'); 
     205                $activity = $activityManager->get_activity($startActivityId); 
     206 
     207                // Verifica se a atividade existe e é uma atividade de start 
     208                if ($activity['wf_type'] != 'start') 
     209                        return false; 
     210 
     211                // Verifica se existe uma transição da atividade de start para outra atividade 
     212                $transition = $activityManager->get_process_transitions($this->processID, $startActivityId); 
     213                $nextActivityId = $transition[0]['wf_act_to_id']; 
     214                if (empty($nextActivityId)) 
     215                        return false; 
     216 
     217                // Captura objeto runtime da globals 
     218                $runtime = &$GLOBALS['workflow']['wf_runtime']; 
     219 
     220                // TODO: Pegar usuário padrão da tabela phpgw_config 
     221                $defaultUser = 73231; 
     222 
     223                // Seta usuário para execução. Se $user for false, seta usuário padrão do job 
     224                $uidNumber = ($user)? $user : $defaultUser; 
     225                if (empty($uidNumber)) return false; 
     226 
     227                $GLOBALS['phpgw_info']['user']['account_id'] = $uidNumber; 
     228                $_SESSION['phpgw_info']['workflow']['account_id'] = $uidNumber; 
     229                $GLOBALS['user'] = $uidNumber; 
     230 
     231                if (!empty($instanceName) && is_string($instanceName)) 
     232                        $runtime->setName($instanceName); 
     233 
     234                if (!empty($properties) && is_array($properties)) 
     235                        $runtime->setProperties($properties); 
     236 
     237                // Cria a instância 
     238                if ($runtime->instance->complete($startActivityId)){ 
     239                        // Envia instância para próxima transição 
     240                        $runtime->instance->sendTo($startActivityId, $nextActivityId); 
     241                        return true; 
     242                } 
     243                return false; 
     244        } 
     245 
     246        /** 
    193247         * É o método que contém o código do Job que será executado 
    194248         * @return void 
Note: See TracChangeset for help on using the changeset viewer.