5 | | A maneira de representar uma classe model é criando um arquivo no formato class.!AtividadeModel.inc.php, e armazenando este arquivo no diretório 'code' da estrutura de diretórios do processo, semelhante ao que foi feito anteriormente com a camada de Controle. O arquivo deverá conter: |
| 5 | Assim como na camada de Controle, a camada Model, também é subdivida em três níveis: |
| 6 | |
| 7 | * Nível módulo: representado pela classe !BaseModel; |
| 8 | * Nível processo: representado pela classe Model; |
| 9 | * Nível atividade: representado pela classe AtividadeModel. |
| 10 | |
| 11 | Os três níveis unem-se por herança no seguinte esquema: |
| 12 | |
| 13 | !BaseModel -> Model -> AtividadeModel |
| 14 | |
| 15 | A classe !BaseModel está declarada no módulo workflow e vale para todos os processos. Nela estão codificados atributos e métodos de uso geral a serem usados pelas camadas Model das atividades. |
| 16 | |
| 17 | Atributos da classe !BaseModel: |
| 18 | |
| 19 | * instance: objeto da instância em execução; |
| 20 | * activity: objeto da atividade em execução; |
| 21 | * DAO: objeto da camada de abstração de banco de dados; |
| 22 | * request: array com os dados submetidos pelo formulário da camada View; |
| 23 | * workflow: array com as variáveis do ambiente de execução da atividade; |
| 24 | * natural: objeto para conexão com o mainframe; |
| 25 | * factory: objeto para a requisição de instâncias das classes auxiliares, como organograma, ldap, etc; |
| 26 | * viewData: array contendo os dados a serem exibidos na camada View |
| 27 | * Contém atributos privados da camada model; |
| 28 | * Contém atributos que representam as propriedades da instância em execução; |
| 29 | * Pode conter outros atributos para armazenamento de instâncias de classes de negócio (como paginação, filtros, etc); |
| 30 | |
| 31 | Em especial o atributo viewData, seu objetivo é armazenar os dados a serem retornados para a camada de Controle. Esta é a forma ideal para que um método de negócio da Model faça o retorno de dados. |
| 32 | |
| 33 | Os atributos da instância, por padrão, deverão começar com o caracter ''underline'' para diferenciá-los dos atributos privados da classe. |
| 34 | |
| 35 | Métodos da classe !BaseModel: |
| 36 | |
| 37 | * getAttributes: retorna os atributos da instância (aqueles iniciados por ''underline''); |
| 38 | * getRequest: cria atributos na classe para as variáveis do array Request; |
| 39 | * addViewVar: adiciona uma variável ao array viewData; |
| 40 | * getViewVar: recupera uma variável do array viewData; |
| 41 | * setWfProperty: seta o valor de uma variável do ambiente de execução; |
| 42 | * getWfProperty: recupera o valor de uma variável do ambiente; |
| 43 | * setNameInstance: seta o valor do identificador da instância; |
| 44 | * updateInstance: transfere os atributos de instância que estão na classe para o objeto instance; |
| 45 | * updateAttributes: carrega nos atributos de instância da classe os valores que estão no objeto instance; |
| 46 | * commitInstance: sinaliza para o módulo workflow que a instância deve ser salva em disco. |
| 47 | |
| 48 | |
| 49 | |
| 50 | A maneira de representar uma classe model é criando um arquivo no formato class.Atividade.Model.inc.php, e armazenando este arquivo no diretório 'code' da estrutura de diretórios do processo, semelhante ao que foi feito anteriormente com a camada de Controle. O arquivo deverá conter: |
262 | | |
263 | | 46 '''Estrutura:''' |
264 | | 47 |
265 | | 48 * Nível de módulo: |
266 | | 49 * Representado pela classe !BaseModel; |
267 | | 50 * Contém um atributo para armazenamento de instância da classe Instance (!BaseModel::instance); |
268 | | 51 * Contém um atributo para armazenamento de instância da classe Activity (!BaseModel::activity); |
269 | | 52 * Contém um atributo para armazenamento de instância da classe Wf_Db (!BaseModel::DAO); |
270 | | 53 * Contém um atributo para armazenamento de comandos SQL (!BaseModel::commandText); |
271 | | 54 * Contém um atributo para armazenamento de resultados de consultas SQL (!BaseModel::resultSet); |
272 | | 55 * Contém um atributo para armazenamento de registros individuais das consultas SQL (!BaseModel::resultRow); |
273 | | 56 * Contém um atributo para armazenamento do array $_REQUEST (!BaseModel::request); |
274 | | 57 * Contém um atributo para armazenamento de informações sobre o ambiente workflow (!BaseModel::workflow); |
275 | | 58 * Contém um atributo para armazenamento de dados a serem lidos pelo Controller e exibidos na View (!BaseModel::viewData); |
276 | | 59 * Contém atributos para armazenamento de instâncias de classes de negócio (como paginação); |
277 | | 60 * Contém métodos para recuperar e alterar variáveis do ambiente workflow; |
278 | | 61 * Contém métodos de sincronização entre as informações contidas na classe Instance e nos atributos; |
279 | | 62 * Contém método construtor da camada Model (pode ser estendido no nível de processo). |
280 | | 63 |
281 | | 64 * Nível de processo: |
282 | | 65 * Representado pela classe Model; |
283 | | 66 * Contém as informações, representadas na forma de atributos, comuns a todo o processo; |
284 | | 67 * Propaga as informações pelas atividades através da sincronização de seus atributos com a classe Instance do módulo de workflow; |