DES:vRaptorExtJs
Voltar a Página Inicial - Menu Sistemas
Índice
Introdução
Este documento descreve os padrões de desenvolvimento dos sistemas que utilizam a tecnologia vRaptor+ExtJS
Documentação Externa
ExtJS
- Documentação da API do ExtJS - http://dev.sencha.com/deploy/dev/docs/
- Centro de Aprendizeda ExtJS - http://www.sencha.com/learn/
- Fórum do ExtJS - http://www.sencha.com/forum/
- Manual do ExtJS (Escrito pela comunidade) http://www.sencha.com/learn/Ext_Manual
- Aprenda sobre a biblioteca ExtJS http://www.sencha.com/learn/Learn_About_the_Ext_JavaScript_Library
- Layout de Aplicação para Iniciantes - http://www.extjs.com/learn/Tutorial:Application_Layout_for_Beginners_(Portuguese)
vRaptor
- Documentação do vRaptor - http://vraptor.caelum.com.br/documentacao
- Download do Projeto Padrão - http://vraptor.caelum.com.br/download.jsp
Sistemas que utilizam esta Tecnologia
ExtJs 3
- Academus: Acadêmico e Estágios (Ajuda,Histórico)
- Almox: Almoxarifado (Ajuda,Histórico)
- Pontus-Web: Informações sobre Ponto Eletrônico
- SGA: Atividades
- SGCCR: Convênios (Ajuda,Historico)
- SGC: Concursos (Ensalamento,Prova,Gabarito)
- SGCV: Vestibular (Ensalamento,Prova,Gabarito)
- SGPDE: Informações do PDE (Ajuda,Histórico)
- SGPPStricto: Programas Stricto Sensu
- SGT: Transportes (Ajuda,Histórico)
ExtJs 4
- Login: Login nos sistemas
- Osiris: Gerenciamento das solicitações de acesso
- SGEM: Empréstimos de Materiais
- SGLCC: Licitações
- SGPE: Pessoas Externas
- SGRD: Diplomas
Árvore de diretorios de um projeto vRaptor+ExtJs
- build
- conf
- dist
- nbproject
- setup
- src
- baseconfig.properties - Arquivo de Configurações Gerais (Conexão com Banco,diretórios,etc)
- br
- unioeste
- projeto
- controller - Controladores de acesso da visão
- dao - Objetos de acesso aos dados
- modelo - Modelos das Entidades do Banco de Dados
- sessions
- CriadorDeSessionFactoryConfiguracoes.java - Arquivo de Configurações do Hibernate
- sharedev - Classes Java compartilhadas entre todos projetos
- web
- META-INF
- MANIFEST.MF
- context.xml - Configuração do contexto (diretório principal)
- WEB-INF
- jsp
- index
- genericJson.jsp - Página especial que retorna respostas em formato Json
- index.jsp - Página inicial que requisita os arquivos JavaScript do projeto
- index2.jsp - Página especial mostrada quando a conexão é fechada, ou o login não foi possível
- lib - Bibliotecas (jars) compartilhados entre todos os projetos
- relatorios - Contem os relatórios na fase de Desenvolvimento (diretório e subdiretórios gerados automaticamente)
- messages.properties
- web.xml - Configurações do servidor de aplicação
- ext - Arquivos da Biblioteca ExtJs
- icons - Ícones
- images - Imagens
- js
- frmCadastro
- frmGeral
- frmPesquisa
- uteis - Arquivos JavaScript compartilhados entre todos os projetos
- frmPrincipal.js - Configurações de Construção do menu do sistema e requisições iniciais
Legenda:
- diretorio - Diretório de arquivos compartilhados por todos os projetos por meio do SVN.
- arquivo.extensao - Arquivo de configuração. Importante para o funcionamento do sistema.
- diretorio - Diretório que contem os principais arquivos da aplicação.
- arquivo.extensao - Arquivo do projeto
- diretorio - Diretorio do projeto
Bibliotecas Java
Nome | Descrição | Pacotes Dependências/Relacionadas |
---|---|---|
vraptor | Framework MVC | vraptor |
jasper | Geração de relatórios | jasperreports,itext,commons-digester,groovy-all,fntArial |
hibernate | Framework de Persistência de Dados | hibernate,ejb3-persistence,hibernate-annotations,hibernate-validator¹ |
flexson | Serialização de objetos java para json | flexjson |
jtds | Conexão com o banco de dados | jtds |
Envio de emails | ||
gsp | Parser de sql | gsp |
commons-io | Utilidades para streams e arquivos | commons-io |
1 - Usado em pouquíssimos lugares, poderia remover
Atualização do Projeto
Quando for atualizar o projeto, alguns arquivos locais não compartilhados talvez precisem ser atualizados. Estes arquivos precisam estar atualizados e conforme os padrões para que o sistema interaja corretamente. Estes arquivos são em geral configurações que são diferentes para cada projeto, mas dentro de um padrão. Os arquivos são modificados ocasionalmente/raramente.
- index.jsp (novos arquivos JS compartilhados; atualização de forma de login) - ocasionalmente
- CriadorDeSessionFactoryConfiguracoes.java (novos beans compartilhados; atualização de forma de login) - ocasionalmente
- frmPrincipal.js (atualização da viewport principal ou na forma de login) - ocasionalmente
- bibliotecas do projeto (novas bibliotecas compartilhadas) - ocasionalmente
- basesconfig.properties (modificação das configurações gerais: conexão com banco, diretórios, etc) - ocasionalmente
- index2.jsp (modificação na página de logout ou página de sessão expirada/erro) - raramente
- genericJson.jsp (modificação na forma de responder objetos JSON) - raramente
- web.xml (modificação das configurações do servidor de aplicação) - raramente
Padronizações vRaptor
Nomes de Métodos dos Controladores
Os nomes de métodos devem seguir um padrão para serem identificados pelo controle de transações e de acesso.
- Métodos que farão escrita no banco de dados, devem iniciar por: adiciona, atualiza ou remove. Exemplos:
- adiciona
- atualiza
- atualizaEstadosEMunicipios
- removeTodosMunicipios
- Outros métodos, de leitura, devem iniciar preferencialmente por nomes como: lista, verifica, carrega. Exemplos:
- verifica
- lista
- listaTudo
- listaPorEstado
- listaTudoPorEstado
- carregaDadosPrincipais
Padronizações ExtJS
Tamanhos das Janelas
Para a exibição correta das janelas (considerando resolução 1024x768), os tamanhos devem estar entre:
- Largura: Mínimo de 500 e Máximo de 700
- Altura: Mínimo de 100 e Máximo de 500
Componentes
Campos Básicos
- Ext.form.TextField: char,varchar - Strings menores
- Ext.form.DateField: datetime - Campo de data com calendário para escolha
- Ext.form.TextArea: text,char,varchar - Strings maiores
- Ext.form.NumberField: decimal, int - Números inteiros ou decimais (com/sem separação de casas)
- Ext.form.CheckBox: bool - Boleanos (Sim/Não) (pode ser usado também com char (Ex: 'T','F') desde que seja feito um campo bolean transient no modelo da entidade)
- Ext.form.Radio: int,char,varchar - Strings ou números de identificação (poucas opções para ser uma nova tabela)
- Ext.ux.MoneyField: money - Dinheiro no formato 50.000,00
- Ext.form.HtmlEditor: text,char,varchar - Editor de Código HTML
- Ext.form.SliderField: int,decimal - Números inteiros ou decimais entre um intervalo
Campos Avançados
- Ext.form.ComboBox: campo FK (int,char,varchar) com uma descrição (char,varchar) - Usado para poucos registros
- UxBscGenerico: campo FK (int,char,varchar) com uma descrição (char,varchar) - Usado para vários registros
- Ext.form.TextFieldRemoteVal: int,char,varchar - Campo que faz a validação remotamente
- Ext.ux.form.FileUploadField: image,blob - Upload de arquivo único
- AwesomeUploader: image,blob - Upload de vários arquivos
Campos Especiais
- Ext.form.DisplayField: int,char,varchar - Campo não submetido e não validado
- Ext.form.Hidden: int,char,varchar,datetime,money,decimal,text - Campo escondido de qualquer tipo que será submetido
Outros Componentes
- UxCdsGenerico: Janela de cadastro genérica
- UxPsqGenerico: Janela de pesquisa genérica
- UxGrdDuplo: Painel com grid duplo (filtrados/selecionados)
Funcionamento do Controle de Acesso/Transações
vRaptor
Para que um controlador tenha seus métodos verificados pelo controle de acesso, a classe deve ter a seguinte anotação:
... @Resource @TrnName(value = "CodigoDaTransacaoDoControleDeAcesso") public class NomeDaEntidadeController { ...
ExtJs
Para que uma Tela/Transação apareça no menu do sistema e seja verificada pelo controle de acesso, é necessário que o parâmetro id do item de menu seja igual ao código da transação cadastrada no controle de transações.
... var nomeDaVariavel_ItemDeMenu = new Application.SubMenuTreeNode({ text:'Nome do Item de Menu', id: 'CodigoDaTransacaoDoControleDeAcesso', listeners: { click: function(){ appViewPort.addWindow(fQueRetornaAJanelaCorrespondenteAoItemDeMenu()); } } }); ...
Alterações para execução do projeto no JBoss 7
Para implantar o projeto no JBoss 7 é necessário ajustar o sistema para que o VRaptor faça um scan estático das classes. Isso significa que o VRaptor fará o mapeamento das classes anotadas antes da primeira subida do projeto. Isso deixa a subida mais lenta, mas posteriormente o sistema executa mais rapidamente, pois o scan não precisará mais ser feito.
Para que o scan estático funcione, é necessário incluir o seguinte trecho no arquivo nbbuil.xml do projeto no Netbeans (o arquivo pode ser localizado acessando a aba "Arquivos"):
... <target name="-post-compile"> <path id="build.classpath"> <fileset dir="build/web/WEB-INF/lib" includes="*.jar" /> </path> <java classpathref="build.classpath" classname="br.com.caelum.vraptor.scan.VRaptorStaticScanning" fork="true"> <arg value="build/web/WEB-INF/web.xml" /> <classpath refid="build.classpath" /> <classpath path="build/web/WEB-INF/classes" /> </java> </target> ...