67 | | * @package Atos_Administrativos. |
68 | | */ |
69 | | class ComporModel extends Model |
70 | | { |
71 | | /** |
72 | | * Implementa acao padrao da atividade Compor. |
73 | | * @license http://www.gnu.org/copyleft/gpl.html GPL. |
74 | | * @access public. |
75 | | * @return boolean. |
76 | | */ |
77 | | function defaultAction() |
78 | | { |
79 | | $ano = date('Y'); |
80 | | $this->addViewVar("categoria" , "10000" ); |
81 | | $this->addViewVar("categlist" , $this->lista_categorias() ); |
82 | | $this->addViewVar("ano" , $ano ); |
83 | | $this->addViewVar("lista_anos" , $this->lista_anos($ano) ); |
84 | | return true; |
85 | | } |
86 | | |
87 | | /** |
88 | | * Implementa acao Salvar - Atribui valor as variaveis da instancia e passa |
89 | | * para a proxima atividade |
90 | | * @return bool |
91 | | * @access public |
92 | | */ |
93 | | function salvarAction() |
94 | | { |
95 | | if (!count($erro = $this->verifica_erros($this->request))) |
96 | | { |
97 | | $this->_usuario = $this->getWfProperty('wf_user_name'); |
98 | | $this->_categoria = trim($this->request['categoria']); |
99 | | $this->_numero = trim($this->request['numero'] ); |
100 | | $this->_area = trim($this->request['area'] ); |
101 | | $this->_assunto = trim($this->request['assunto'] ); |
102 | | $this->_texto = trim($_POST['texto'] ); |
103 | | $this->_ano = $this->request['ano']; |
104 | | |
105 | | $this->updateInstance(); |
106 | | $this->instance->setNextUser($this->getWfProperty('wf_user_id')); |
107 | | $this->setNameInstance($this->_assunto); |
108 | | $this->commitInstance(); |
109 | | return true; |
110 | | } |
111 | | else |
112 | | { |
113 | | $this->addViewVar("msg" , $erro ); |
114 | | $this->addViewVar("icon_msg" , "icon_msg_erro.png" ); |
115 | | $this->addViewVar("class_msg" , "msg_erro" ); |
116 | | $this->addViewVar("categoria" , $this->request['categoria'] ); |
117 | | $this->addViewVar("numero" , $this->request['numero'] ); |
118 | | $this->addViewVar("area" , $this->request['area'] ); |
119 | | $this->addViewVar("assunto" , $this->request['assunto'] ); |
120 | | $this->addViewVar("texto" , $_POST['texto'] ); |
121 | | $this->addViewVar("ano" , $this->request['ano'] ); |
122 | | $this->addViewVar("categlist" , $this->lista_categorias() ); |
123 | | $this->addViewVar("lista_anos" , $this->lista_anos(date('Y'))); |
124 | | return false; |
125 | | } |
126 | | } |
127 | | } |
128 | | ?> |
129 | | }}} |
130 | | |
131 | | Neste exemplo estão codificados duas ações da atividade: default e salvar. Ambos serão acionados pela camada de controle conforme as ações forem solicitadas. O método defaultAction() é encarregado de preparar os dados a serem exibidos na camada de visualização quando a atividade for executada a primeira vez. Já o método SalvarAction() implementa o que fazer quando o usuário clicar no botão Salvar do formulário da atividade. Analisando mais a fundo este método, ele começa fazendo uma consistência nos dados vindos do formulário (representado pelo objeto Request). Caso sejam válidos realiza as seguintes operações: |
132 | | |
133 | | * Armazena os dados do formulário como atributos da camada Model; |
134 | | * Em seguida executa o método updateInstance() que irá transferir para a instância os atributos da camada Model; |
135 | | * Seta qual o próximo usuário que irá receber a instância. Isso é feito pelo método setNextUser(); |
136 | | * Executa o método commitInstance(), que fará a atualização da instância definitivamente e encerrará a execução da atividade; |
137 | | * Retorna indicativo de sucesso da operação |
138 | | |
139 | | Caso exista inconsistência nos dados do formulário, irá: |
140 | | |
141 | | * Preparar os dados para serem exibidos novamente ao usuário. Cada chamada ao método addViewVar cria uma variável a ser passada para a camada de visualização; |
142 | | * Retornar indicativo de insucesso da operação. |
143 | | |
144 | | Isso conclui a camada Model a nível de atividade. |
145 | | |
146 | | Agora é necessário definir a camada Model a nível de processo, cuja finalidade é difinir os atributos da instância e também os métodos de modelo que são comuns a todo o processo. |
147 | | |
148 | | Eis um exemplo de camada de Modelo a nível de processo: |
149 | | |
150 | | {{{ |
151 | | <?php |
152 | | /** |
153 | | * Implementa o modelo do processo Atos Administrativos. |
154 | | * @author carloseduardo |
155 | | * @author viani |
156 | | * @author aleheil |
157 | | * @version 1.4 |
158 | | * @license http://www.gnu.org/copyleft/gpl.html GPL |
159 | | * @package Atos_Administrativos. |
| 62 | * @package Nome_do_Processo |
270 | | $erro = array(); |
271 | | |
272 | | if ($_REQUEST['categoria'] == "" ) |
273 | | $erro[] = "Escolha uma categoria correspondente ao Ato Administrativo."; |
274 | | |
275 | | if (trim($_REQUEST['numero']) == "") |
276 | | $erro[] = "O preenchimento do campo Número é obrigatório."; |
277 | | elseif (!ereg ("^[0-9]{1,3}$", trim($_REQUEST['numero']))) |
278 | | $erro[] = "Número de Ato inválido."; |
279 | | |
280 | | if ( trim($_REQUEST['area']) == "" ) |
281 | | $erro[] = "O preenchimento do campo Área é obrigatório."; |
282 | | |
283 | | if (trim($_REQUEST['assunto']) == "") |
284 | | $erro[] = "O preenchimento do campo Assunto é obrigatório."; |
285 | | |
286 | | if ( trim($_REQUEST['texto']) == "" ) |
287 | | $erro[] = "O preenchimento do campo Texto é obrigatório."; |
288 | | |
| 102 | // comandos de validação dos dados |
| 120 | |
| 121 | Agora, a nível de atividade valem as mesmas regras de criação de arquivo, só que o nome será no formato class.Atividade.Model.inc.php. O arquivo deverá conter: |
| 122 | |
| 123 | * Uma classe com nome no formato !AtividadeModel, que extenda a classe Model do processo; |
| 124 | * Métodos que implementam cada uma das ações solicitadas pelo usuário e encaminhadas pelo Controller; |
| 125 | * Resultados booleanos indicando sucesso ou falha na requisição feita pelo usuário. |
| 126 | |
| 127 | Abaixo um exemplo de camada Model de uma atividade: |
| 128 | |
| 129 | {{{ |
| 130 | <?php |
| 131 | /** |
| 132 | * Implementa a Camada de Modelo da Atividade Cadastrar |
| 133 | * @author Fulano |
| 134 | * @version 1.x |
| 135 | * @license http://www.gnu.org/copyleft/gpl.html GPL |
| 136 | * @package Nome_do_Processo |
| 137 | */ |
| 138 | class CadastrarModel extends Model |
| 139 | { |
| 140 | /** |
| 141 | * Implementa acao padrao da atividade Cadastrar |
| 142 | * @license http://www.gnu.org/copyleft/gpl.html GPL. |
| 143 | * @access public. |
| 144 | * @return boolean. |
| 145 | */ |
| 146 | function defaultAction() |
| 147 | { |
| 148 | // Comandos do método, por exemplo: |
| 149 | |
| 150 | $this->addViewVar("mensagem", "Digite uma mensagem."); |
| 151 | |
| 152 | return true; |
| 153 | } |
| 154 | |
| 155 | /** |
| 156 | * Implementa acao Salvar |
| 157 | * @return bool |
| 158 | * @access public |
| 159 | */ |
| 160 | function salvarAction() |
| 161 | { |
| 162 | if (!count($erro = $this->verifica_erros($this->request))) |
| 163 | { |
| 164 | |
| 165 | $this->_mensagem = trim($this->request['mensagem']); |
| 166 | $this->addViewVar("mensagem", "Sua mensagem foi salva."); |
| 167 | |
| 168 | $this->updateInstance(); |
| 169 | $this->setNameInstance($this->_mensagem); |
| 170 | $this->commitInstance(); |
| 171 | return true; |
| 172 | } |
| 173 | else |
| 174 | { |
| 175 | $this->addViewVar("mensagem", "Mensagem inválida. Digite novamente."); |
| 176 | |
| 177 | return false; |
| 178 | } |
| 179 | } |
| 180 | } |
| 181 | ?> |
| 182 | }}} |
| 183 | |
| 184 | Neste exemplo estão codificados duas ações da atividade: default e salvar. Ambas serão acionados pela camada de controle conforme as ações forem solicitadas. O método defaultAction() é encarregado de preparar os dados a serem exibidos na camada de visualização quando a atividade for executada a primeira vez. Já o método !SalvarAction() implementa o que fazer quando o usuário clicar no botão Salvar do formulário da atividade. Analisando mais a fundo este método, ele começa fazendo uma consistência nos dados vindos do formulário (representado pelo objeto Request). Caso sejam válidos realiza as seguintes operações: |
| 185 | |
| 186 | * Armazena os dados do formulário como atributos da camada Model; |
| 187 | * Em seguida executa o método updateInstance() que irá transferir para a instância os atributos da camada Model; |
| 188 | * Executa o método commitInstance(), que fará a atualização da instância definitivamente e encerrará a execução da atividade; |
| 189 | * Retorna indicativo de sucesso da operação |
| 190 | |
| 191 | Caso exista inconsistência nos dados do formulário, irá: |
| 192 | |
| 193 | * Preparar os dados para serem exibidos novamente ao usuário (chamadas ao método addViewVar); |
| 194 | * Retornar indicativo de insucesso da operação. |
| 195 | |
| 196 | Isso conclui a camada Model a nível de atividade. |