DES:vRaptorExtJs
Voltar a Página Inicial - Menu Sistemas
Tabela de conteúdo |
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 Aprendizagem 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
Sistema ExtJs SVN Atuais Desenvolvedores Status Academus 4.1 MVC academus Tiago/Marcelo Producao/Desenvolvimento Almox 3 almox Tiago/Elton Producao Login 4.1 login Tiago Producao Minos 4.1 MVC minos_mvc Márcio Producao Osiris 4.1 osiris Tiago Producao SGA 3 sga_vraptor Tiago Producao SGC 3 sgc Tiago Producao SGCCR 4.1 MVC sgccr_mvc Tiago Producao SGCV 3 sgcv Tiago Producao SGE 3 sge_vraptor Tiago Producao SGPDE 4.1 MVC sgpde_mvc Márcio Producao SGPibic 4.1 MVC sgpibic Lucas/Gean Desenvolvimento SGPPLS 4.1 MVC sgppls_mvc Alessandro Producao SGPStricto 3 sgpstricto Lucas/Gean Producao/Desenvolvimento SGRD 4.1 sgrd,sgrd_mvc Alessandro/Lia Producao/Desenvolvimento (Atualizando para 4.1 MVC) SGT 3 sgt Márcio Producao Desenvolvimento Parado: Pontus-Web 3 pontus_vraptor Elton SGEM 4.1 sgem SGLCC 4.1 sglcc_mvc SGPE 4.1 sgpe
Á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
Campo | Tipo | Uso | Prefixo padrão |
---|---|---|---|
Ext.form.TextField | char,varchar | Strings menores | tf |
Ext.form.DateField | datetime | Campo de data com calendário para escolha | df |
Ext.form.TextArea | text,char,varchar | Strings maiores | ta |
Ext.form.NumberField | decimal, int | Números inteiros ou decimais (com/sem separação de casas) | nf |
Ext.form.CheckBox | bool - Boleanos (Sim/Não) | pode ser usado também com char (Ex: 'T','F') desde que seja feito um campo boolean transient no modelo da entidade | cb |
Ext.form.Radio | int,char,varchar | Strings ou números de identificação (poucas opções para ser uma nova tabela) | rd |
Ext.form.MoneyField | money | Dinheiro no formato 50.000,00 | mf |
Ext.form.HtmlEditor | text,char,varchar | Editor de Código HTML | he |
Ext.form.SliderField | int,decimal | Números inteiros ou decimais entre um intervalo | sf |
- Ext.form.TextField: char,varchar - Strings menores :: Prefixo padrão: ft
- 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
Campo | Tipo | Uso | Prefixo padrão |
---|---|---|---|
Ext.form.ComboBox | campo FK (int,char,varchar) com uma descrição (char,varchar) | Usado para poucos registros | cb |
UxBscGenerico | campo FK (int,char,varchar) com uma descrição (char,varchar) | Usado para vários registros | bsc |
Ext.form.TextFieldRemoteVal | int,char,varchar | Campo que faz a validação remotamente | tfr |
Ext.ux.form.FileUploadField | image,blob | Upload de arquivo único | fup |
AwesomeUploader | image,blob | Upload de vários arquivos | aup |
- 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)
Nomenclatura
- Campos de tela: Utilizar o padrão de prefixo corresponde ao campo que se está utilizando concatenado ao nome do campo no model. Exemplo: objeto Ext.form.TextField para edição de um campo pssFscNome: deve-se colocar o prefixo ft concatenado ao nome do campo pssFscNome, resultando no nome ftPssFscNome
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()); } } }); ...
Servidores Tomcat
Nossa estrutura consiste de:
- Um servidor para as aplicações (200.201.88.170), rodando com Linux Ubuntu e Tomcat 7
- Dois servidores para os relatórios, em cluster (200.201.88.171 e 200.201.88.172), rodando com Linux Ubuntu e Tomcat 7
- O cluster é implementado com o HAProxy
- Nos servidores em cluster, a pasta de deploy é compartilhada (o 171 é a matriz); dessa forma, o deploy feito em um servidor automaticamente é feito no outro também
- A pasta de configuração dos sistemas é um link simbólico para o servidor 170, ou seja, essa pasta fica compartilhada entre todos os 3 servidores
Links para configuração do JDK da Oracle:
http://www.magentodeveloperleedsuk.co.uk/installing-oracle-java-jdk-7-on-ubuntu-12-04-step-by-step/
Após instalar a nova JDK, remover a OpenJDK: sudo apt-get remove --purge openjdk-*
https://issues.apache.org/jira/browse/CASSANDRA-4275
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> ...
Monitoramento do JBoss 7 utilizando o "Applications Manager 10", da empresa ManageEngine
To monitor JBoss, the http-invoker.sar should be deployed in the JBoss Server. The application (http-invoker.sar) is by default deployed in the JBoss server.
If the http port of the JBoss server is changed then the port number in the attribute InvokerURLSuffix should also be modified in jboss-3.2.0/server/default/deploy/http-invoker.sar/META-INF/jboss-service.xml file.More Info>>
To monitor JBoss 5.0.0 version and above jbossagent.sar should be deployed in JBoss server. To deploy follow the steps below Copy jbossagent.sar from location <Applications Manager home>/working/resources and paste under <JBOSS_HOME>/server/default/deploy.If you are running JBoss in different domain like all then deployment target folder would be <JBOSS_HOME>/server/all/deploy