source: trunk/workflow/inc/local/classes/class.wf_engine.php @ 4740

Revision 4740, 13.6 KB checked in by viani, 13 years ago (diff)

Ticket #2119 - Inclusão de parâmetro size no plugin wf_select_user

  • Property svn:executable set to *
Line 
1<?php
2/**
3* Provê métodos que acessam informações relacionadas à engine.
4* @author Sidnei Augusto Drovetto Junior - drovetto@gmail.com
5* @version 1.0
6* @license http://www.gnu.org/copyleft/gpl.html GPL
7* @package Workflow
8* @subpackage local
9*/
10class wf_engine
11{
12        /**
13        * @var object $processManager objeto da classe ProcessManager
14        * @access private
15        */
16        var $processManager;
17        /**
18        * @var object $acl objeto da classe workflow_acl
19        * @access private
20        */
21        var $acl;
22        /**
23        * @var object $run_activity objeto da classe run_activity
24        * @access private
25        */
26        var $run_activity;
27
28        /**
29        * Construtor do wf_engine.
30        * @return object
31        * @access public
32        */
33        function wf_engine()
34        {
35                $this->processManager = null;
36                $this->acl = null;
37                $this->run_activity = null;
38        }
39
40        private function getCurrentProcessID()
41        {
42                if (!is_null($GLOBALS['workflow']['wf_runtime']->activity))
43                        return (int) $GLOBALS['workflow']['wf_runtime']->activity->getProcessId();
44
45                if (isset($GLOBALS['workflow']['job']))
46                        return (int) $GLOBALS['workflow']['job']['processID'];
47
48                return false;
49        }
50
51        private function checkProcessAccess($processID)
52        {
53                $processID = (int) $processID;
54                return ($processID === $this->getCurrentProcessID());
55        }
56
57        /**
58        * Busca informações de um (ou mais) processo(s).
59        * @param mixed $pids Uma array de IDs de processo ou um inteiro representando o ID de um processo.
60        * @return array Informações sobre o(s) processo(s).
61        * @access public
62        */
63        function getProcess($pids)
64        {
65                if (!is_array($pids))
66                        $pids = array($pids);
67
68                $flagObject[0] = is_null($this->processManager);
69                if ($flagObject[0])
70                        $this->processManager = Factory::getInstance('workflow_processmanager');
71
72                $output = array();
73                foreach ($pids as $pid)
74                        $output[] = $this->processManager->get_process($pid, false);
75
76                if ($flagObject[0])
77                        $this->processManager = null;
78
79                return $output;
80        }
81
82        /**
83        * Busca informações de um (ou mais) processo(s) pelo seu nome (ou apenas parte do nome).
84        * @param string $name String contendo o nome de um processo.
85        * @return array Informações sobre o(s) processo(s).
86        * @access public
87        */
88        function getProcessesByName($name)
89        {
90                $output = array();
91                if (is_string($name)){
92                        $flagObject[0] = is_null($this->processManager);
93                        if ($flagObject[0])
94                                $this->processManager = Factory::getInstance('workflow_processmanager');
95
96                        // assinatura do método: list_processes($offset,$maxRecords,$sort_mode,$find='',$where='')
97                        $output = $this->processManager->list_processes(-1, -1, '', $name, null);
98
99                        if ($flagObject[0])
100                                $this->processManager = null;
101                }
102                return $output;
103        }
104
105        /**
106        * Dá seqüência no fluxo de uma instância (simula ação do usuário).
107        * @param int $activityID O ID da atividade da instância.
108        * @param int $instanceID O ID da instância.
109        * @return bool true caso a instância tenha sido continuada e false caso contrário.
110        * @access public
111        * @deprecated 2.2.00.000
112        */
113        function continueInstance($activityID, $instanceID)
114        {
115                wf_warn_deprecated_method('wf_instance', 'continueInstance');
116                $WFInstance = &Factory::getInstance('wf_instance');
117                return $WFInstance->continueInstance($activityID, $instanceID);
118        }
119
120        /**
121        * Aborta uma instância
122        * @param int $instanceID O ID da instância.
123        * @return boolean true se foi possível abortar a instância e false caso contrário.
124        * @access public
125        * @deprecated 2.2.00.000
126        */
127        function abortInstance($instanceID)
128        {
129                wf_warn_deprecated_method('wf_instance', 'abort');
130                $WFInstance = &Factory::getInstance('wf_instance');
131                return $WFInstance->abort($instanceID);
132        }
133
134        /**
135        * Define o nome (identificador) de uma instância
136        * @param int $instanceID O ID da instância.
137        * @param string $name O novo nome da instância.
138        * @return boolean true se foi possível mudar o nome da instância e false caso contrário.
139        * @access public
140        * @deprecated 2.2.00.000
141        */
142        function setInstanceName($instanceID, $name)
143        {
144                wf_warn_deprecated_method('wf_instance', 'setName');
145                $WFInstance = &Factory::getInstance('wf_instance');
146                return $WFInstance->setName($instanceID, $name);
147        }
148
149        /**
150        * Define a prioridade de uma instância
151        * @param int $instanceID O ID da instância.
152        * @param int $priority A nova prioridade da instância
153        * @return boolean true se foi possível mudar a prioridade da instância e false caso contrário.
154        * @access public
155        * @deprecated 2.2.00.000
156        */
157        function setInstancePriority($instanceID, $priority)
158        {
159                wf_warn_deprecated_method('wf_instance', 'setPriority');
160                $WFInstance = &Factory::getInstance('wf_instance');
161                return $WFInstance->setPriority($instanceID, $priority);
162        }
163
164        /**
165        * Busca instâncias abandonadas.
166        * @param int $numberOfDays O tempo (em dias) em que a instância está abandonada.
167        * @param array $activities Uma lista de atividades das quais se quer as instâncias abandonadas (também pode ser um valor inteiro).
168        * @return array As instâncias que satisfazem o critério de seleção.
169        * @access public
170        * @deprecated 2.2.00.000
171        */
172        function getIdleInstances($numberOfDays, $activities = null)
173        {
174                wf_warn_deprecated_method('wf_instance', 'getIdle');
175                $WFInstance = &Factory::getInstance('wf_instance');
176                return $WFInstance->getIdle($numberOfDays, $activities);
177        }
178
179        /**
180        * Busca todas as instâncias.
181        * @param array $activities Uma lista de atividades das quais se quer as instâncias (também pode ser um valor inteiro).
182        * @return array As instâncias que satisfazem o critério de seleção.
183        * @access public
184        * @deprecated 2.2.00.000
185        */
186        function getInstances($activities = null)
187        {
188                wf_warn_deprecated_method('wf_instance', 'getIdle');
189                return $this->getIdleInstances(0, $activities);
190        }
191
192        /**
193        * Busca todas as instâncias que possuem esse nome (identificador).
194        * @param string $name O nome da instância que se quer encontrar.
195        * @return array As instâncias que satisfazem o critério de seleção.
196        * @access public
197        * @deprecated 2.2.00.000
198        */
199        function getInstancesByName($name)
200        {
201                wf_warn_deprecated_method('wf_instance', 'getByName');
202                $WFInstance = &Factory::getInstance('wf_instance');
203                $preOutput = $WFInstance->getByName($name);
204                $output = array();
205                foreach ($preOutput as $childInstance)
206                        if (!is_null($childInstance['wf_activity_id']))
207                                $output[] = $childInstance;
208
209                return $output;
210        }
211
212        /**
213        * Busca as instâncias filhas de uma instância
214        * Se os parâmetros não forem informados, retorna instâncias filhas das instância atual.
215        * @param int $instanceID O ID da instância pai (não obrigatório).
216        * @param int $activityID O ID da atividade corrente da instância pai
217        * @return array As instâncias filhas do par instância/atividade atual
218        * @access public
219        * @deprecated 2.2.00.000
220        */
221        function getChildInstances($instanceID = null, $activityID = null)
222        {
223                wf_warn_deprecated_method('wf_instance', 'getChildren');
224                $WFInstance = &Factory::getInstance('wf_instance');
225                $preOutput = $WFInstance->getChildren($instanceID);
226                $output = array();
227                foreach ($preOutput as $childInstance)
228                        if (!is_null($childInstance['wf_activity_id']))
229                                $output[] = $childInstance;
230
231                return $output;
232        }
233
234        /**
235        * Busca as propriedades de uma instância (do mesmo processo).
236        * @param int $instanceID O ID da instância.
237        * @return mixed Uma array contento as propriedades da instância (no formato "nome_da_propriedade" => "valor"). Ou false em caso de erro.
238        * @access public
239        * @deprecated 2.2.00.000
240        */
241        function getInstanceProperties($instanceID)
242        {
243                wf_warn_deprecated_method('wf_instance', 'getProperties');
244                $WFInstance = &Factory::getInstance('wf_instance');
245                return $WFInstance->getProperties($instanceID);
246        }
247
248        /**
249        * Busca as propriedades de uma instância filha.
250        * @param int $instanceID O ID da instância filha.
251        * @return array Propriedades da instância filha. Array no formato "nome_da_propriedade" => "valor".
252        * @access public
253        * @deprecated 2.2.00.000
254        */
255        function getChildInstanceProperties($instanceID)
256        {
257                wf_warn_deprecated_method('wf_instance', 'getProperties');
258                $WFInstance = &Factory::getInstance('wf_instance');
259                return $WFInstance->getProperties($instanceID);
260        }
261
262        /**
263        * Busca os recursos que um usuário pode administrar.
264        * @param string $type Tipo do recurso ("PRO", "MON, etc.).
265        * @param int $uid O usuário do qual se quer obter informações de administração de recursos.
266        * @return array IDs dos recursos ao qual o usuário tem acesso.
267        * @access public
268        */
269        function getUserPermissions($type, $uid)
270        {
271                $flagObject[0] = is_null($this->acl);
272                if ($flagObject[0])
273                        $this->acl = Factory::getInstance('workflow_acl');
274
275                $output = $this->acl->getUserPermissions($type, $uid);
276
277                if ($flagObject[0])
278                        $this->acl = null;
279
280                return $output;
281        }
282
283        /**
284        * Busca os recursos que um usuário pode administrar (inclusive faz verificação de acordo com permissões advindas de grupos).
285        * @param string $type Tipo do recurso ("PRO", "MON, etc.).
286        * @param int $uid O usuário do qual se quer obter informações de administração de recursos.
287        * @return array IDs dos recursos ao qual o usuário tem acesso.
288        * @access public
289        */
290        function getUserGroupPermissions($type, $uid)
291        {
292                $flagObject[0] = is_null($this->acl);
293                if ($flagObject[0])
294                        $this->acl = Factory::getInstance('workflow_acl');
295
296                $output = $this->acl->getUserGroupPermissions($type, $uid);
297
298                if ($flagObject[0])
299                        $this->acl = null;
300
301                return $output;
302        }
303
304        /**
305        * Traz informações sobre uma atividade a partir de seu ID
306        * @param int $activityID O ID da atividade
307        * @return mixed Uma array associativa contendo as informações sobre a atividade ou false caso a atividade não seja encontrada
308        * @access public
309        */
310        function getActivityInformationByID($activityID)
311        {
312                $activityID = (int) $activityID;
313                $processID = $this->getCurrentProcessID();
314
315                /* build the SQL query */
316                $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 = ?)";
317                $db = &Factory::getInstance('WorkflowObjects')->getDBGalaxia()->Link_ID;
318                $resultSet = $db->query($query, array($activityID, $processID));
319
320                /* return the data */
321                if (($row = $resultSet->fetchRow()))
322                        return array(
323                                'activity_id' => $row['wf_activity_id'],
324                                'name' => $row['wf_name'],
325                                'normalized_name' => $row['wf_normalized_name'],
326                                'type' => $row['wf_type'],
327                                'description' => $row['wf_description']
328                        );
329                else
330                        return false;
331        }
332
333        /**
334        * Traz informações sobre uma atividade a partir de seu nome
335        * @param int $activityName O nome da atividade
336        * @return mixed Uma array associativa contendo as informações sobre a atividade ou false caso a atividade não seja encontrada
337        * @access public
338        */
339        function getActivityInformationByName($activityName)
340        {
341                $processID = $this->getCurrentProcessID();
342
343                /* build the SQL query */
344                $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 = ?)";
345                $db = &Factory::getInstance('WorkflowObjects')->getDBGalaxia()->Link_ID;
346                $resultSet = $db->query($query, array($activityName, $processID));
347
348                /* return the data */
349                if (($row = $resultSet->fetchRow()))
350                        return array(
351                                'activity_id' => $row['wf_activity_id'],
352                                'name' => $row['wf_name'],
353                                'normalized_name' => $row['wf_normalized_name'],
354                                'type' => $row['wf_type'],
355                                'description' => $row['wf_description']
356                        );
357                else
358                        return false;
359        }
360
361        /**
362        * Busca as instância de usuários de acordo com alguns critérios
363        * @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)
364        * @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)
365        * @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)
366        * @return array As instâncias que satisfazem o critério de seleção.
367        * @access public
368        * @deprecated 2.2.00.000
369        */
370        function getUserInstances($users, $activities = null, $status = null)
371        {
372                wf_warn_deprecated_method('wf_instance', 'getByUser');
373                $WFInstance = &Factory::getInstance('wf_instance');
374                return $WFInstance->getByUser($users, $activities, $status);
375        }
376
377        /**
378        * Seta uma propriedade de uma instância.
379        * @param int $instanceID O ID da instância.
380        * @return bool true caso a propriedade tenha sido alterada com sucesso
381        * @access public
382        * @deprecated 2.2.00.000
383        */
384        function setInstanceProperty($instanceID, $nameProperty, $value)
385        {
386                wf_warn_deprecated_method('wf_instance', 'setProperty');
387                $WFInstance = &Factory::getInstance('wf_instance');
388                return $WFInstance->setProperty($instanceID, $nameProperty, $value);
389        }
390
391        /**
392        * Verifica se um dado usuário tem acesso a uma instância
393        * @param int $userID O ID do usuário que se quer verificar
394        * @param int $instanceID O ID da instância
395        * @param int $activityID O ID da atividade onde a instância está
396        * @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
397        * @return bool true se o usuário tiver acesso à instância (levando em consideração $writeAccess) ou false caso contrário
398        * @access public
399        * @deprecated 2.2.00.000
400        */
401        function checkUserAccessToInstance($userID, $instanceID, $activityID, $writeAccess = true)
402        {
403                wf_warn_deprecated_method('wf_instance', 'checkUserAccess');
404                $WFInstance = &Factory::getInstance('wf_instance');
405                return $WFInstance->checkUserAccess($userID, $instanceID, $activityID, $writeAccess);
406        }
407}
408?>
Note: See TracBrowser for help on using the repository browser.