WF/maisexemplos: Solicitaes_10.xml

File Solicitaes_10.xml, 18.8 KB (added by pedroerp, 14 years ago)
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<process>
3  <name>Solicitações</name>
4  <isValid>y</isValid>
5  <version>1.0</version>
6  <isActive>y</isActive>
7   <description>Processo de Gerenciamento de Solicitações.</description>
8  <lastModif>03/09/2009 [09:25:25]</lastModif>
9  <sharedCode><![CDATA[<?php
10//camada de controle do processo
11wf_include('class.controller.inc.php');
12wf_include('class.compor.solicitacao.controller.inc.php');
13wf_include('class.avaliar.controller.inc.php');
14wf_include('class.executar.controller.inc.php');
15wf_include('class.informar.resultado.controller.inc.php');
16
17//camada da lógica de negócios
18wf_include('class.model.inc.php');
19wf_include('class.compor.solicitacao.model.inc.php');
20wf_include('class.avaliar.model.inc.php');
21wf_include('class.executar.model.inc.php');
22wf_include('class.informar.resultado.model.inc.php');
23?>
24  ]]></sharedCode>
25  <configs>
26    <config>
27      <wf_config_name>execute_activities_in_debug_mode</wf_config_name>
28      <wf_config_value></wf_config_value>
29      <wf_config_value_int>1</wf_config_value_int>
30    </config>
31    <config>
32      <wf_config_name>mail_smtp_profile</wf_config_name>
33      <wf_config_value>default</wf_config_value>
34      <wf_config_value_int></wf_config_value_int>
35    </config>
36  </configs>
37  <activities>
38    <activity>
39      <name>Avaliar</name>
40      <type>switch</type>
41      <description>Atividade para o distribuidor avaliar uma solicitação</description>
42      <menuPath></menuPath>
43      <lastModif>03/09/2009 [09:25:25]</lastModif>
44      <isInteractive>y</isInteractive>
45      <isAutoRouted>y</isAutoRouted>
46      <roles>
47        <role>distribuidor</role>
48      </roles>
49      <agents>
50      </agents>
51      <code><![CDATA[<?php
52$application = new AvaliarController(new AvaliarModel($env), $env);
53$application->run($_REQUEST['action']);
54?>
55      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
56    <activity>
57      <name>Compor Solicitação</name>
58      <type>start</type>
59      <description>Atividade para o solicitante compor uma solicitação.</description>
60      <menuPath></menuPath>
61      <lastModif>03/09/2009 [09:25:25]</lastModif>
62      <isInteractive>y</isInteractive>
63      <isAutoRouted>y</isAutoRouted>
64      <roles>
65        <role>Solicitante</role>
66      </roles>
67      <agents>
68      </agents>
69      <code><![CDATA[<?php
70$application = new ComporSolicitacaoController(new ComporSolicitacaoModel($env), $env);
71$application->run($_REQUEST['action']);
72?>
73      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
74    <activity>
75      <name>Executar</name>
76      <type>activity</type>
77      <description>Atividade para o técnico executar uma solicitação</description>
78      <menuPath></menuPath>
79      <lastModif>03/09/2009 [09:25:25]</lastModif>
80      <isInteractive>y</isInteractive>
81      <isAutoRouted>y</isAutoRouted>
82      <roles>
83        <role>tecnico</role>
84      </roles>
85      <agents>
86      </agents>
87      <code><![CDATA[<?php
88$application = new ExecutarController(new ExecutarModel($env), $env);
89$application->run($_REQUEST['action']);
90?>
91      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
92    <activity>
93      <name>Informar Resultado</name>
94      <type>end</type>
95      <description>Atividade para informar o solicitante sobre sua solicitação</description>
96      <menuPath></menuPath>
97      <lastModif>03/09/2009 [09:25:25]</lastModif>
98      <isInteractive>y</isInteractive>
99      <isAutoRouted>y</isAutoRouted>
100      <roles>
101        <role>Solicitante</role>
102      </roles>
103      <agents>
104      </agents>
105      <code><![CDATA[<?php
106$application = new InformarResultadoController(new InformarResultadoModel($env), $env);
107$application->run($_REQUEST['action']);
108?>
109      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
110  </activities>
111  <templates>
112    <template>
113      <name>Informar_Resultado.tpl</name>
114      <code><![CDATA[{wf_default_template}
115
116{include file="info_solicitacao.tpl"}
117<br/>
118<table>
119        <tr>
120                <td><strong>Mensagem</strong></td>
121                <td>{$mensagem|nl2br}</td>
122        <tr>
123</table>
124<input type="submit" name="action" value="Encerrar" />
125      ]]></code>    </template>
126    <template>
127      <name>Avaliar.tpl</name>
128      <code><![CDATA[{wf_default_template}
129
130{include file="info_solicitacao.tpl"}
131<br>
132Selecione o Técnico para executar a solicitação:
133<br>
134<select id="tecnico" name="tecnico">
135        <option value="-1" selected="selected">Enviar para o perfil</option>
136        {foreach from=$tecnicos item=tecnico key=id}
137                <option value="{$id}">{$tecnico}</option>
138        {/foreach}
139</select>
140<br><br>
141<input type="submit" name="action" value="Aprovar" />
142<input type="submit" name="action" value="Rejeitar" />
143      ]]></code>    </template>
144    <template>
145      <name>info_solicitacao.tpl</name>
146      <code><![CDATA[<table>
147        <tr>
148                <td><strong>Solicitante</strong></td>
149                <td>{$solicitante_desc}</td>
150        </tr>
151        <tr>
152                <td><strong>Data</strong></td>
153                <td>{$data}</td>
154        </tr>
155        <tr>
156                <td><strong>Título</strong></td>
157                <td>{$titulo}</td>
158        </tr>
159        <tr>
160                <td><strong>Descrição</strong></td>
161                <td>{$descricao|nl2br}</td>
162        </tr>
163</table>
164      ]]></code>    </template>
165    <template>
166      <name>Compor_Solicitao.tpl</name>
167      <code><![CDATA[{wf_default_template}
168
169<table>
170        <tr>
171                <td><label>Título</label></td>
172                <td><input type="text" name="titulo" value="{$titulo}" /></td>
173        </tr>
174        <tr>
175                <td><label>Descrição</label></td>
176                <td><textarea name="descricao">{$descricao}</textarea></td>
177        </tr>
178</table>
179<input type="submit" name="action" value="Enviar" />
180      ]]></code>    </template>
181    <template>
182      <name>Executar.tpl</name>
183      <code><![CDATA[{wf_default_template}
184
185{include file="info_solicitacao.tpl"}
186<br/>
187<strong>Procedimento Executado:</strong><br/>
188<textarea name="procedimento" cols="50" rows="7"></textarea><br/>
189<input type="submit" name="action" value="Finalizar" />
190      ]]></code>    </template>
191  </templates>
192  <includes>
193    <include>
194      <name>class.informar.resultado.model.inc.php</name>
195      <code><![CDATA[<?php
196
197/**
198 * Classe InformarResultadoModel
199 * @author Sidnei Augusto Drovetto Junior
200 * @author Mauricio Luis Viani
201 * @author Guilherme Striquer Bisotto
202 * @version 3.2
203 * @package Solicitacoes
204 * @subpackage Model
205 */
206class InformarResultadoModel extends Model
207{
208
209        /**
210         * Carrega os dados da solicitação para serem mostrados ao solicitante
211         * @return boolean
212         * @access public
213         */
214        function defaultAction() {
215                $this->updateAttributes();
216                $this->addViewVar('titulo', $this->_titulo);
217                $this->addViewVar('descricao', $this->_descricao);
218                $this->addViewVar('data', $this->_data);
219                $this->addViewVar('solicitante_desc', $this->_solicitante_desc);
220                $this->addViewVar('mensagem', $this->_mensagem);
221
222                return true;
223        }
224
225        /**
226         * Finaliza o fluxo
227         * @return boolean
228         * @access public
229         */
230        function encerrarAction() {
231                $this->commitInstance();
232
233                return true;
234        }
235}
236?>
237      ]]></code>    </include>
238    <include>
239      <name>class.compor.solicitacao.model.inc.php</name>
240      <code><![CDATA[<?php
241
242/**
243 * Classe ComporSolicitacaoModel
244 * @author Sidnei Augusto Drovetto Junior
245 * @author Mauricio Luis Viani
246 * @author Guilherme Striquer Bisotto
247 * @version 3.2
248 * @package Solicitacoes
249 * @subpackage Model
250 */
251class ComporSolicitacaoModel extends Model
252{
253
254        /**
255         * Valida os dados inseridos no formuário
256         * @params array Array request
257         * @return array Array com as mensagens de erro
258         * @access public
259         */
260        function inputValidate($form) {
261                $msgerro = Array();
262
263                /* título não pode ser vazio */
264                if (isset($form['titulo']) && !empty($form['titulo']))
265                        $this->_titulo = $form['titulo'];
266                else
267                        $msgerro[] = 'É necessário fornecer um título';
268
269                if (isset($form['descricao']) && !empty($form['descricao']))
270                        $this->_descricao = $form['descricao'];
271                else
272                        $msgerro[] = 'É necessário fornecer uma descrição';
273
274                return $msgerro;
275        }
276
277        /**
278         * Salva os dados na instância e encaminha o fluxo para a próxima atividade
279         * @return boolean True caso não existam erros no formulário, False caso contrário
280         * @access public
281         */
282        function enviarAction() {
283                /* se não houve erros */
284                if (count($this->activity->error = $this->inputValidate($this->request)) == 0) {
285                        $this->_solicitante = $this->getWfProperty('wf_user_id');
286                        $this->_solicitante_desc = $this->getWfProperty('wf_user_cnname');
287                        $this->_data = date('d/m/Y H\hi');
288                        $this->updateInstance();
289                        $this->commitInstance();
290                        return true;
291                } else {
292                        $this->addViewVar('titulo', $this->_titulo);
293                        $this->addViewVar('descricao', $this->_descricao);
294                        return false;
295                }
296        }
297}
298?>
299      ]]></code>    </include>
300    <include>
301      <name>class.model.inc.php</name>
302      <code><![CDATA[<?php
303
304/**
305 * Classe Model
306 * @author Sidnei Augusto Drovetto Junior
307 * @author Mauricio Luis Viani
308 * @author Guilherme Striquer Bisotto
309 * @version 3.2
310 * @package Solicitacoes
311 * @subpackage Model
312 */
313class Model extends BaseModel
314{
315
316        /**
317         * @var string $_titulo Atributo da instância para armazenar o título da solicitação
318         * @access public
319         */
320        public $_titulo;
321
322        /**
323         * @var string $_descricao Atributo da instância para armazenar a descrição da solicitação
324         * @access public
325         */
326        public $_descricao;
327
328        /**
329         * @var string $_solicitante Atributo da instância para armazenar o uidNumber do solicitante
330         * @access public
331         */
332        public $_solicitante;
333
334        /**
335         * @var string $_solicitante_desc Atributo da instância para armazenar o nome da solicitante
336         * @access public
337         */
338        public $_solicitante_desc;
339
340        /**
341         * @var string $_data Atributo da instância para armazenar a data da solicitação
342         * @access public
343         */
344        public $_data;
345
346        /**
347         * @var string $_mensagem Atributo da instância para armazenar a resposta da solicitação
348         * @access public
349         */
350        public $_mensagem;
351
352
353        /**
354         * Método defaultAction padrão. Deve ser reimplementado a nível de
355         * atividade.
356         * @return void
357         * @access public
358         */
359        public function defaultAction() {
360                return true;
361        }
362}
363?>
364      ]]></code>    </include>
365    <include>
366      <name>class.avaliar.controller.inc.php</name>
367      <code><![CDATA[<?php
368
369/**
370 * Classe AvaliarController
371 * @author Sidnei Augusto Drovetto Junior
372 * @author Mauricio Luis Viani
373 * @author Guilherme Striquer Bisotto
374 * @version 3.2
375 * @package Solicitacoes
376 * @subpackage Controller
377 */
378class AvaliarController extends Controller
379{
380
381        /**
382         * Mostra os dados da solicição ao distribuidor
383         * @return void
384         * @access public
385         */
386        function __default () {
387                $this->model->defaultAction();
388                $this->loadViewVars();
389                $this->showForm($this->AVALIAR);
390        }
391
392        /**
393         * Aprova a execução da solicitação
394         * @return void
395         * @access public
396         */
397        function aprovar() {
398                $this->model->aprovarAction();
399        }
400
401        /**
402         * Rejeita a execução da solicitação
403         * @return void
404         * @access public
405         */
406        function rejeitar()     {
407                $this->model->rejeitarAction();
408        }
409}
410?>
411      ]]></code>    </include>
412    <include>
413      <name>class.executar.model.inc.php</name>
414      <code><![CDATA[<?php
415
416/**
417 * Classe ExecutarModel
418 * @author Sidnei Augusto Drovetto Junior
419 * @author Mauricio Luis Viani
420 * @author Guilherme Striquer Bisotto
421 * @version 3.2
422 * @package Solicitacoes
423 * @subpackage Model
424 */
425class ExecutarModel extends Model
426{
427        /**
428         * Carrega os dados da instância e carrega os dados para serem mostrados ao executor
429         * @return boolean
430         * @access public
431         */
432        function defaultAction() {
433                $this->updateAttributes();
434                $this->addViewVar('titulo', $this->_titulo);
435                $this->addViewVar('descricao', $this->_descricao);
436                $this->addViewVar('data', $this->_data);
437                $this->addViewVar('solicitante_desc', $this->_solicitante_desc);
438
439                return true;
440        }
441
442        /**
443         * Salva as considerações do executor e encaminha o fluxo para a atividade Informar Resultado
444         * @return boolean
445         * @access public
446         */
447        function finalizarAction() {
448                $this->updateAttributes();
449                $this->_mensagem = "Sua solicitação foi atendida pelo técnico "
450                        . $this->getWfProperty('wf_user_cnname')
451                        . ".\n<strong>Procedimento executado:</strong>\n" . $this->request['procedimento'];
452                $this->updateInstance();
453                $this->instance->setNextUser($this->_solicitante); /* devolve a instância para o solicitante */
454                $this->commitInstance();
455
456                return true;
457        }
458}
459?>
460      ]]></code>    </include>
461    <include>
462      <name>class.avaliar.model.inc.php</name>
463      <code><![CDATA[<?php
464
465/**
466 * Classe AvaliarController
467 * @author Sidnei Augusto Drovetto Junior
468 * @author Mauricio Luis Viani
469 * @author Guilherme Striquer Bisotto
470 * @version 3.2
471 * @package Solicitacoes
472 * @subpackage Controller
473 */
474class AvaliarModel extends Model
475{
476
477        /**
478         * Carrega os dados para serem mostrados ao distribuidor
479         * @return boolean
480         * @access public
481         */
482        function defaultAction() {
483                $this->updateAttributes();
484
485                $roles = $this->factory->getInstance('wf_role');
486                $array_users = $roles->getUsersFromRole('tecnico');
487
488                foreach($array_users as $tecnico){
489                        $tecnicos[$tecnico['id']] = $tecnico['name'];
490                }
491
492                $this->addViewVar('titulo', $this->_titulo);
493                $this->addViewVar('descricao', $this->_descricao);
494                $this->addViewVar('data', $this->_data);
495                $this->addViewVar('solicitante_desc', $this->_solicitante_desc);
496                $this->addViewVar('tecnicos', $tecnicos);
497
498                return true;
499        }
500
501        /**
502         * Aprova a execução da solicitação e encaminha o fluxo para a atividade Executar
503         * @return boolean
504         * @access public
505         */
506        function aprovarAction() {
507                $this->instance->setNextActivity('Executar');
508                $tecnico = $this->request['tecnico'];
509
510                if($tecnico != -1){
511                        $this->instance->setNextUser($tecnico);
512                }
513
514                $this->commitInstance();
515
516                return true;
517        }
518
519        /**
520         * Rejeita a execução da solicitação e encaminha o fluxo para a atividade Informar Resultado
521         * @return boolean
522         * @access public
523         */
524        function rejeitarAction() {
525                $this->updateAttributes();
526                $this->instance->setNextActivity('Informar Resultado');
527                $this->instance->setNextUser($this->_solicitante); /* devolve a instância para o solicitante */
528                $this->_mensagem = "Sua solicitação foi rejeitada";
529                $this->updateInstance();
530                $this->commitInstance();
531
532                return true;
533        }
534}
535?>
536      ]]></code>    </include>
537    <include>
538      <name>class.compor.solicitacao.controller.inc.php</name>
539      <code><![CDATA[<?php
540
541/**
542 * Classe ComporSolicitacaoController
543 * @author Sidnei Augusto Drovetto Junior
544 * @author Mauricio Luis Viani
545 * @author Guilherme Striquer Bisotto
546 * @version 3.2
547 * @package Solicitacoes
548 * @subpackage Controller
549 */
550class ComporSolicitacaoController extends Controller
551{
552        /**
553         * Carrega o formulário de composição da solicitação
554         * @return void
555         * @access public
556         */
557        function __default() {
558                $this->model->defaultAction();
559                $this->loadViewVars();
560                $this->showForm($this->COMPOR_SOLICITACAO);
561        }
562
563        /**
564         * Envia o fluxo para a atividade Avaliar
565         * @return void
566         * @access public
567         */
568        function enviar() {
569                $this->model->enviarAction();
570                $this->loadViewVars();
571        }
572}
573?>
574      ]]></code>    </include>
575    <include>
576      <name>class.controller.inc.php</name>
577      <code><![CDATA[<?php
578
579/**
580 * Classe Controller
581 * @author Sidnei Augusto Drovetto Junior
582 * @author Mauricio Luis Viani
583 * @author Guilherme Striquer Bisotto
584 * @version 3.2
585 * @package Solicitacoes
586 * @subpackage Controller
587 */
588class Controller extends BaseController
589{
590        /** @var string $COMPOR_SOLICITACAO Nome do template da atividade Compor Solicitação */
591        var $COMPOR_SOLICITACAO = 'Compor_Solicitao.tpl';
592
593        /** @var string $AVALIAR Nome do template da atividade Avaliar */
594        var $AVALIAR = 'Avaliar.tpl';
595
596        /** @var string $EXECUTAR Nome do template da atividade Executar */
597        var $EXECUTAR = 'Executar.tpl';
598
599        /** @var string $INFORMAR_RESULTADO Nome do template da atividade Informar Resultado */
600        var $INFORMAR_RESULTADO = 'Informar_Resultado.tpl';
601
602
603        /**
604         * Construtora da classe Controller
605         * @params object $model Objeto da classe model
606         * @params array $env array env
607         * @access public
608         */
609        public function Controller(&$model, &$env){
610                $this->super(&$model, &$env);
611                $this->assign('inbox', $this->model->getWfProperty('wf_workflow_path').'/index.php?start_tab=0');
612                $this->assign('processes', $this->model->getWfProperty('wf_workflow_path').'/index.php?start_tab=1');
613                $this->assign(
614                        'activity_title',
615                        sprintf("%s - %s",
616                                $this->model->getWfProperty('wf_process_name'),
617                                $this->model->getWfProperty('wf_activity_name')
618                        )
619                );
620        }
621
622        /**
623         * Executa a ação solicitada
624         * @params string $action Nome do método a ser executado
625         * @return mixed
626         * @access public
627         */
628        public function run($action){
629                $this->dispatch($action);
630        }
631
632}
633?>
634      ]]></code>    </include>
635    <include>
636      <name>class.informar.resultado.controller.inc.php</name>
637      <code><![CDATA[<?php
638
639/**
640 * Classe InformarResultadoController
641 * @author Sidnei Augusto Drovetto Junior
642 * @author Mauricio Luis Viani
643 * @author Guilherme Striquer Bisotto
644 * @version 3.2
645 * @package Solicitacoes
646 * @subpackage Controller
647 */
648class InformarResultadoController extends Controller
649{
650        /**
651         * Carrega os dados da solicitação para serem mostrados ao Solicitante
652         * @return void
653         * @access public
654         */
655        function __default() {
656                $this->model->defaultAction();
657                $this->loadViewVars();
658                $this->showForm($this->INFORMAR_RESULTADO);
659        }
660
661        /**
662         * Finaliza a execução do fluxo
663         * @return void
664         * @access public
665         */
666        function encerrar() {
667                $this->model->encerrarAction();
668        }
669}
670?>
671      ]]></code>    </include>
672    <include>
673      <name>class.executar.controller.inc.php</name>
674      <code><![CDATA[<?php
675
676/**
677 * Classe ExecutarController
678 * @author Sidnei Augusto Drovetto Junior
679 * @author Mauricio Luis Viani
680 * @author Guilherme Striquer Bisotto
681 * @version 3.2
682 * @package Solicitacoes
683 * @subpackage Controller
684 */
685class ExecutarController extends Controller
686{
687
688        /**
689         * Carrega os dados da solicitação para serem mostrados ao executor
690         * @return void
691         * @access public
692         */
693        function __default() {
694                $this->model->defaultAction();
695                $this->loadViewVars();
696                $this->showForm($this->EXECUTAR);
697        }
698
699        /**
700         * Finaliza a execução da solicitação
701         * @return void
702         * @access public
703         */
704        function finalizar() {
705                $this->model->finalizarAction();
706        }
707}
708?>
709      ]]></code>    </include>
710  </includes>
711  <jobs>
712  </jobs>
713  <resources>
714  </resources>
715  <transitions>
716     <transition>
717       <from>Compor Solicitação</from>
718       <to>Avaliar</to>
719     </transition>
720     <transition>
721       <from>Avaliar</from>
722       <to>Executar</to>
723     </transition>
724     <transition>
725       <from>Avaliar</from>
726       <to>Informar Resultado</to>
727     </transition>
728     <transition>
729       <from>Executar</from>
730       <to>Informar Resultado</to>
731     </transition>
732  </transitions>
733</process>