= Requisitos para o Novo Módulo Applications = || 01 || Implementar a estrutura da aplicação com divisão em camadas: controller, model, view || || 02 || A camada controller deve conhecer a camada view e model || || 03 || A camada model não terá acesso a camada view || || 04 || Existirá uma interface para cada camada || || 05 || Será obrigatório implementar as camadas controller e model. || || 06 || A implementação da camada view é opcional || || 07 || Registrar as rotinas do sistema, ações das rotinas e os perfis de acesso às ações || || 08 || Compartilhar os perfis entre rotinas e atividades || || 09 || A associação de usuários/grupos aos perfis será o controle de acesso das rotinas || || 10 || A primeira fronteira da camada controller será a página de entrada do módulo || || 11 || Os dados passados para a controller deverão ser: identificador da ação, e opcionalmente dados para consumo na execução da atividade || || 12 || A camada model deve retornar dados formatados para a camada controller || || 13 || Implantar uma ferramenta para mapeamento de objetos de banco de dados || || 14 || A camada model deve ter acesso a qualquer classe de negócio do sistema || || 15 || Possibilitar à camada model definir operações sobre a instância: iniciar, completar, enviar, definir transição, definir usuário, atualizar atributos || || 16 || A classe de instância deverá percorrer o fluxo, executando as atividades não interativas, e retornar o resultado da operação || || 17 || Será possível definir código a ser executado pelas atividades, sob controle da instância, sendo possível acesso ao modelo de negócio do sistema || || 18 || A camada model e o código da rotina devem ter acesso à biblioteca (lib) do módulo || || 19 || A classe de instância será responsável por persistir os seus dados || || 20 || Obrigar a implementação de um método para validação de dados, na camada model || || 21 || Obrigar a implementação de um método padrão nas camadas controller e model || || 22 || Gerar o código básico das camadas model e controller || || 23 || Implementar uma estrutura de mensagens para o processo, com possibilidade de internacionalização || || 24 || A camada controller fornece dados para a camada view em conformidade com um protocolo de representação || || 25 || A camada de visualização, por ser opcional, permite que seja implementada por sistema externo || || 26 || A camada de visualização tem a responsabilidade de criar as interfaces, usando ferramentas que estejam disponíveis || || 27 || A camada view deve mesclar os dados com a interface || || 28 || A camada view não deve misturar código da aplicação servidora com código html || || 29 || A camada view executa chamadas endereçadas para ações da controller, utilizando protocolo http/post || || 30 || Disponibilizar uma interface de serviço para ações da camada controller || || 31 || Autenticar as chamadas de serviço usando sessão do Expresso || || 32 || Implantar uma ferramenta para construção de interfaces, com template padrão e internacionalização || || 33 || Validar os dados no lado cliente, usando javascript, garantido adequação às propriedades dos campos, e prevenindo contra sqlinjection e xss || || 34 || A camada de visualização deverá invocar a validação de dados, implementada na model, antes de submeter o formulário || || 35 || A validação de dados deve ser obrigatória no lado servidor || || 36 || Criar uma biblioteca (lib) de classes utilitárias || || 37 || Possibilitar a construção de classes utilitárias pelas organizações || || 38 || Disponibilizar as classes utilitárias, para as camada model, sob demanda. Controlar a inicialização e destruição das classes através de métodos da camada model || || 39 || Construir componentes de visualização específicos para o negócio do workflow || || 40 || Definir uma nova estrutura de armazenamento de código para o processo, que contemple as novas características do mvc || || 41 || Executar a aplicação sob tratamento de erros || || 42 || Implementar a sinalização de erro em todos as classes utilitárias disponíveis para o sistema || || 43 || Prover um arquivo para a definição da configuração e dados constantes do sistema || || 44 || Identificar quais bibliotecas de javascript estarão disponíveis para o sistema || || 45 || O código da aplicação não poderá ter acesso à classes do módulo ||