Changes between Version 6 and Version 7 of WF/versaoexperimental


Ignore:
Timestamp:
12/17/09 14:59:33 (14 years ago)
Author:
viani
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WF/versaoexperimental

    v6 v7  
    5151  * Remover o design pattern Observer; 
    5252  * Transferir para o módulo as classes que são de estrutura dos processos e deixar no engine apenas as funcionalidades relativas ao andamento das instâncias; 
    53   * Eliminar o parâmetro link do banco de dados passado cada classe; 
     53  * Eliminar a sobrecarga de métodos do engine que está sendo feita na pasta inc do workflow. Por exemplo a classe workflow_processomanager; 
     54  * Eliminar o parâmetro link do banco de dados passado na construção da classe; 
    5455  * Documentar o engine com um diagrama de classes e um diagrama entidade-relacionamento; 
    5556  * Verificar se é possível documentar o engine com algum diagrama comportamental. 
     
    6061  * Encapsular objetos do array $Globals; 
    6162  * Criar um cache na factory; 
    62   * Avaliar como pode ser feito um cache de objetos que perdure após um recarregamento da página, por exemplo utilizando sessão ou memcache; 
     63   * Avaliar como pode ser feito um cache de objetos que perdure após um recarregamento da página, por exemplo utilizando sessão ou memcache; 
     64   * Definir um hook para implementar o cache personalizado de um organização. Se inexistente, usa o padrão do workflow; 
    6365  * Aproveitar esta factory também para os processos, e prover uma forma de isolar as classes que são do módulo. Uma possibilidade seria criar uma factory abstrata e uma especialização para o workflow e outra para os processos; 
    64   * Verificar se é possível utilizar o autoload para identicar a localização dos arquivos fontes. 
     66  * Verificar se é possível utilizar o autoload para identicar a localização dos arquivos fontes; 
    6567 
    66  * Reescrever as interfaces do workflow utilizando plugins 
    67   * Existirá uma super-classe da qual serão especializados os plugins para ações, filtros, conexões com banco, ldap, filesystem, etc; 
    68   * Registrar os plugins disponíveis em cada interface e registrar o controle de acesso dos usuários; 
    69   * Criar uma classe de segurança que verifica se um plugin está disponível para um usuário, antes de rederizar a interface; 
    70   * Pensar um esquema de cache para otimizar as consultas de segurança. 
     68 * Reorganizar o código do workflow utilizando plugins 
     69  * Definir uma estrutura de plugins que possibilite a separação do núcleo do workflow e suas funcionalidades periféricas; 
     70   * Entende-se por núcleo do workflow toda a estrutura responsável pela execução de atividades, controle do fluxo dos processos, controle de plugins e segurança; 
     71  * Cada plugin deve ter um identificador único que será cadastrado no banco de dados e que possibilite a sua habilitação ou desabilitação; 
     72  * No banco de dados devem ser inseridos dados como: o identificador, localização do arquivo da controller, nome da classe e status; 
     73  * Os plugins devem estender uma classe geral que defina métodos padrão para registro, instanciação e execução daqueles; 
     74  * Em determinados lugares dentro do módulo devem ser definidos hooks. Ex. Menu lateral de administração, aba na interface de usuário, etc.; 
     75  * Deve-se criar uma estrutura padrão para os plugins que siga o design pattern MVC; 
     76  * Deve existir algum controle de acesso para liberar os plugins para usuários; 
     77  * Possibilitar aninhamento de plugins. 
    7178                 
    7279 * Pesquisar e implantar uma ferramenta para design dos fluxos dos processos 
     
    8693  * Implementar uma área, em cada processo, para divulgar as novidades, melhorias e correções. Isso é útil para os usuários acompanharem a evolução dos processos. 
    8794 
     95 * Avaliar as bibliotedas de javascript utilizadas no Expresso e escolher aquelas que serão as oficiais 
     96  * Dentre as bibliotecas existentes, que sejam de mesma natureza, optar por uma delas e modificar o código do módulo. 
     97 
    8898 * Substituir o conector Ajax 
    8999  * Trocar o atual conector Ajax (connector.js / controller.php) usado na interface do módulo, pelo framework nanoAjax, que já é utilizado nos processos. Substituir todas as chamadas do antigo conector pelo novo. 
     
    97107  * Quando alguma alteração nos dados do processo for realizada, na interface de administração, registrar o evento em banco de dados para se ter um histórico dos acontecimentos. Por exemplo, ativação/desativação de processo, alteração de parâmetros, etc; 
    98108  * Verificar a possibilidade de executar triggers nas tabelas do módulo Workflow, para logar a atividade sql. Cuidar para não impactar na performance geral do banco; 
    99   * Outra abordagem pode ser inserção de código nos principais eventos administrativos, para logar as modificações;  
     109  * Outra abordagem pode ser inserção de código nos principais eventos administrativos, para logar as modificações; 
     110 
     111 * Criar atributos de configuração para processos que possam ser acessados na execução das atividades. 
     112 
     113 * Modificar o template padrão de processos para: 
     114  * Definir um hook para personilizar o template por organização; 
     115  * Criar parâmetros para incluir as bibliotecas de javascript. 
    100116 
    101117== Requisitos para o MVC == 
     
    117133  * Implementar o conceito de container, que agrega componentes em uma mesma linha do template; 
    118134  * Criar componente de ocultação e um array de botões submit; 
     135  * Criar um controle de acesso por componente, para ocultar elementos que não estejam disponíveis para um usuário; 
    119136  * Prever também o encapsulamento dos plugins smarty criados para o workflow (select users, etc); 
    120137  * Esta camada será representada pela classe baseview, que terá atributos para os componentes adicionados ao objeto view; 
    121138  * O submit fará uma chamada ao dispatch. O dispatch fará a verificação prévia de campos obrigatórios. Caso não tenha erros irá chamar o método de validação em php, via ajax. Caso sem erros, será montado o array request na model; 
    122139  * Carregar no template os arquivos javascript indicados pelo desenvolvedor. Possibilitar associar funções javascript aos componentes; 
    123   * O objeto view deverá carregar os dados preparados as outras camadas e mesclar no template; 
     140  * O objeto view deverá carregar os dados preparados na camada model e mesclar no template; 
    124141  * A criação do objeto smarty ficará ao encargo da camada view.