Changes between Version 1 and Version 2 of WF/camadamodel


Ignore:
Timestamp:
07/08/08 17:12:23 (16 years ago)
Author:
viani
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WF/camadamodel

    v1 v2  
    33A camada Model define o que o processo vai fazer e como implementá-lo, ou seja, as regras de negócio do sistema. Ela possibilita o desenvolvimento de recursos, independentemente da forma como os dados serão exibidos (interface) e do momento em que serão executados (fluxo).  Essa camada deve saber somente como executar cada recurso do sistema. 
    44 
    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: 
     5Assim 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 
     11Os três níveis unem-se por herança no seguinte esquema: 
     12 
     13 !BaseModel -> Model -> AtividadeModel 
     14 
     15A 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 
     17Atributos 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 
     31Em 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 
     33Os atributos da instância, por padrão, deverão começar com o caracter ''underline'' para diferenciá-los dos atributos privados da classe. 
     34 
     35Mé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 
     50A 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: 
    651 
    752 * Uma classe com nome no formato !AtividadeModel, que extenda a classe Model do processo; 
     
    260305?> 
    261306}}} 
    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;