Version 1 (modified by viani, 16 years ago) (diff) |
---|
Tutorial de Desenvolvimento de um Processo Simples
WikiInclude(WF/tableofcontents)?
Codificar os Includes
Os próximos arquivos devem ser incluídos de forma semelhante como foi feito para o arquivo info_solicitação.tpl anteriormente, só que desta vez será usada a aba 'Includes', da interface de código. Para cada arquivo a ser incluído, execute:
1 - Clique no botão 'Novo Include';
2 - Escolha a opção 'em_branco.php';
3 - Informe o nome do arquivo e clique em OK
4 - Inclua o código correspondente
class.avaliar.controller.inc.php
<?php class AvaliarController extends Controller { function __default () { $this->model->defaultAction(); $this->loadViewVars(); $this->showForm($this->AVALIAR); } function aprovar() { $this->model->aprovarAction(); } function rejeitar() { $this->model->rejeitarAction(); } function run($action) { $this->dispatch($action); } } ?>
class.avaliar.model.inc.php
<?php class AvaliarModel extends Model { function defaultAction() { $this->updateAttributes(); $this->addViewVar('titulo', $this->_titulo); $this->addViewVar('descricao', $this->_descricao); $this->addViewVar('data', $this->_data); $this->addViewVar('solicitante_desc', $this->_solicitante_desc); return true; } function aprovarAction() { $this->instance->setNextActivity('Executar'); $this->commitInstance(); return true; } function rejeitarAction() { $this->updateAttributes(); $this->instance->setNextActivity('Informar Resultado'); $this->instance->setNextUser($this->_solicitante); /* devolve a instância para o solicitante */ $this->_mensagem = "Sua solicitação foi rejeitada"; $this->updateInstance(); $this->commitInstance(); return true; } } ?>
class.compor.solicitacao.controller.inc.php
<?php class ComporSolicitacaoController extends Controller { function __default () { $this->model->defaultAction(); $this->loadViewVars(); $this->showForm($this->COMPOR_SOLICITACAO); } function enviar() { $this->model->enviarAction(); $this->loadViewVars(); } function run($action) { $this->dispatch($action); } } ?>
class.compor.solicitacao.model.inc.php
<?php class ComporSolicitacaoModel extends Model { function defaultAction() { return true; } function inputValidate($form) { $msgerro = Array(); /* título não pode ser vazio */ if (isset($form['titulo']) && !empty($form['titulo'])) $this->_titulo = $form['titulo']; else $msgerro[] = 'É necessário fornecer um título'; if (isset($form['descricao']) && !empty($form['descricao'])) $this->_descricao = $form['descricao']; else $msgerro[] = 'É necessário fornecer uma descrição'; return $msgerro; } function enviarAction() { /* se não houve erros */ if (count($this->activity->error = $this->inputValidate($this->request)) == 0) { $this->_solicitante = $this->getWfProperty('wf_user_id'); $this->_solicitante_desc = $this->getWfProperty('wf_user_cnname'); $this->_data = date('d/m/Y H\hi'); $this->updateInstance(); $this->commitInstance(); return true; } else { $this->addViewVar('titulo', $this->_titulo); $this->addViewVar('descricao', $this->_descricao); return false; } } } ?>
class.controller.inc.php
<?php class Controller extends BaseController { var $COMPOR_SOLICITACAO = 'Compor_Solicitao.tpl'; var $AVALIAR = 'Avaliar.tpl'; var $EXECUTAR = 'Executar.tpl'; var $INFORMAR_RESULTADO = 'Informar_Resultado.tpl'; function Controller(&$model , &$env) { $this->super(&$model , &$env); } } ?>
class.executar.controller.inc.php
<?php class ExecutarController extends Controller { function __default () { $this->model->defaultAction(); $this->loadViewVars(); $this->showForm($this->EXECUTAR); } function finalizar() { $this->model->finalizarAction(); } function run($action) { $this->dispatch($action); } } ?>
class.executar.model.inc.php
<?php class ExecutarModel extends Model { function defaultAction() { $this->updateAttributes(); $this->addViewVar('titulo', $this->_titulo); $this->addViewVar('descricao', $this->_descricao); $this->addViewVar('data', $this->_data); $this->addViewVar('solicitante_desc', $this->_solicitante_desc); return true; } function finalizarAction() { $this->updateAttributes(); $this->_mensagem = "Sua solicitação foi atendida pelo técnico " . $this->getWfProperty('wf_user_cnname') . ".\n<strong>Procedimento executado:</strong>\n" . $this->request['procedimento']; $this->updateInstance(); $this->instance->setNextUser($this->_solicitante); /* devolve a instância para o solicitante */ $this->commitInstance(); return true; } } ?>
class.informar.resultado.controller.inc.php
<?php class InformarResultadoController extends Controller { function __default () { $this->model->defaultAction(); $this->loadViewVars(); $this->showForm($this->INFORMAR_RESULTADO); } function encerrar() { $this->model->encerrarAction(); } function run($action) { $this->dispatch($action); } } ?>
class.informar.resultado.model.inc.php
<?php class InformarResultadoModel extends Model { function defaultAction() { $this->updateAttributes(); $this->addViewVar('titulo', $this->_titulo); $this->addViewVar('descricao', $this->_descricao); $this->addViewVar('data', $this->_data); $this->addViewVar('solicitante_desc', $this->_solicitante_desc); $this->addViewVar('mensagem', $this->_mensagem); return true; } function encerrarAction() { $this->commitInstance(); return true; } } ?>
class.model.inc.php
<?php class Model extends BaseModel { var $_titulo; var $_descricao; var $_solicitante; var $_solicitante_desc; var $_data; var $_mensagem; function Model(&$env) { $this->super(&$env); } } ?>
shared.php
<?php //camada de controle do processo wf_include('class.controller.inc.php'); wf_include('class.compor.solicitacao.controller.inc.php'); wf_include('class.avaliar.controller.inc.php'); wf_include('class.executar.controller.inc.php'); wf_include('class.informar.resultado.controller.inc.php'); //camada da lógica de negócios wf_include('class.model.inc.php'); wf_include('class.compor.solicitacao.model.inc.php'); wf_include('class.avaliar.model.inc.php'); wf_include('class.executar.model.inc.php'); wf_include('class.informar.resultado.model.inc.php'); ?>
1. Introdução
2. Especificação
3. Projeto
3.1. Criar o Fluxo
3.2. Criar o Processo
3.3. Criar as Atividades / Transições / Perfis
3.4. Mapear os Perfis
4. Implementação
4.1. Codificar as Atividades
4.2. Codificar os Templates
4.3. Codificar os Includes
5. Finalização