DES:vRaptorExtJs

De Wiki Unioeste NTI
Edição feita às 11h54min de 9 de julho de 2013 por Marcio.veronez (disc | contribs)
Ir para: navegação, pesquisa

VoltarVoltar 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

vRaptor

Sistemas que utilizam esta Tecnologia

Sistema		ExtJs		SVN		Responsáveis		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 MVC		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
mail Envio de emails mail
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

Campo Tipo Uso Prefixo padrão
Ext.form.DisplayField int,char,varchar Campo não submetido e não validado dsf
Ext.form.Hidden int,char,varchar,datetime,money,decimal,text Campo escondido de qualquer tipo que será submetido hf
  • 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

Campo Tipo Uso Prefixo padrão
UxCdsGenerico Janela de cadastro genérica
UxPsqGenerico Janela de pesquisa genérica
UxGrdDuplo Painel com grid duplo (filtrados/selecionados) }
  • 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


VoltarVoltar a Página Inicial - Menu Sistemas

Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas