Mudanças entre as edições de "DES:vRaptorExtJs"
(72 revisões intermediárias por 5 usuários não estão sendo mostradas) | |||
Linha 4: | Linha 4: | ||
== Introdução == | == Introdução == | ||
− | Este documento descreve os padrões de desenvolvimento dos sistemas que utilizam a tecnologia '''vRaptor+ExtJS''' | + | Este documento descreve os padrões de desenvolvimento dos sistemas da UNIOESTE que utilizam a tecnologia '''vRaptor+ExtJS''' |
+ | |||
+ | === Pequeno histórico === | ||
+ | |||
+ | Em janeiro de 2010 iniciaram os estudos e desenvolvimento de sistemas na Unioeste em um padrão unificado, escrevendo aplicações web na plataforma java. | ||
+ | |||
+ | <li>Para a construção do "server side", iniciou-se uma pequena base de código compartilhado chamada "sharedev", esta fazendo uso do vRaptor. | ||
+ | O vRaptor iniciou na versão 3.1.2 e subiu algumas vezes de versão nos projetos, ficando muito tempo na versão 3.4.1, e em janeiro de 2016, foi atualizado para a versão 3.5.5. | ||
+ | |||
+ | <li>Para a construção do "client side" (interface) foram construídos alguns componentes que fazem uso do ExtJS, esses componentes também sendo compartilhados pelos sistemas. | ||
+ | As primeiras versões utilizavam ExtJS versão 3.3.1, sendo depois atualizada em alguns sistemas para 3.4, depois para versão 4, e atualmente para a versão 4.2.1, a qual também tem um código de componentes compartilhado no padrão mvc. | ||
+ | |||
+ | <li>Para os relatórios foi utilizado o Jasper Reports (desenhando os layouts com o iReport), utilizando a ideia de cadastrar os relatórios e seus filtros em banco. | ||
+ | O JasperReports iniciou com a versão 3.7.2 e depois foi atualizado para a versão 4.1.2, a qual não foi mais atualizada pois é necessário recompilar todos relatórios já existentes para funcionarem na nova versão. | ||
+ | |||
+ | Teste | ||
=== Documentação Externa === | === Documentação Externa === | ||
Linha 10: | Linha 25: | ||
<ul> | <ul> | ||
<li>Documentação da API do ExtJS - [http://dev.sencha.com/deploy/dev/docs/ http://dev.sencha.com/deploy/dev/docs/] | <li>Documentação da API do ExtJS - [http://dev.sencha.com/deploy/dev/docs/ http://dev.sencha.com/deploy/dev/docs/] | ||
− | <li>Centro de | + | <li>Centro de Aprendizagem ExtJS - [http://www.sencha.com/learn/ http://www.sencha.com/learn/] |
<li>Fórum do ExtJS - [http://www.sencha.com/forum/ http://www.sencha.com/forum/] | <li>Fórum do ExtJS - [http://www.sencha.com/forum/ http://www.sencha.com/forum/] | ||
<li>Manual do ExtJS (Escrito pela comunidade) [http://www.sencha.com/learn/Ext_Manual http://www.sencha.com/learn/Ext_Manual] | <li>Manual do ExtJS (Escrito pela comunidade) [http://www.sencha.com/learn/Ext_Manual http://www.sencha.com/learn/Ext_Manual] | ||
Linha 20: | Linha 35: | ||
<li>Documentação do vRaptor - [http://vraptor.caelum.com.br/documentacao http://vraptor.caelum.com.br/documentacao] | <li>Documentação do vRaptor - [http://vraptor.caelum.com.br/documentacao http://vraptor.caelum.com.br/documentacao] | ||
<li>Download do Projeto Padrão - [http://vraptor.caelum.com.br/download.jsp http://vraptor.caelum.com.br/download.jsp] | <li>Download do Projeto Padrão - [http://vraptor.caelum.com.br/download.jsp http://vraptor.caelum.com.br/download.jsp] | ||
+ | </ul> | ||
+ | Guia para Estudo | ||
+ | <ul> | ||
+ | <li>Apostila "Web ágil com VRaptor, Hibernate e AJAX" - [http://www.caelum.com.br/apostila-vraptor-hibernate/ http://www.caelum.com.br/apostila-vraptor-hibernate/] | ||
+ | <li>Introdução ao Javascript - [https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/A_re-introduction_to_JavaScript https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/A_re-introduction_to_JavaScript] | ||
+ | <li>Apostila sobre Javascript - [http://www.scriptbrasil.com.br/download/apostila/837/ http://www.scriptbrasil.com.br/download/apostila/837/] | ||
+ | <li>Introdução sobre Extjs MVC - [http://blog.gustavohenrique.net/2012/02/introducao-ao-padrao-mvc-no-ext-js-4/ http://blog.gustavohenrique.net/2012/02/introducao-ao-padrao-mvc-no-ext-js-4/] | ||
+ | <li>Guia sobre arquitetura de sistemas em Extjs - [http://docs.sencha.com/extjs/6.0/application_architecture/application_architecture.html http://docs.sencha.com/extjs/6.0/application_architecture/application_architecture.html] | ||
+ | |||
</ul> | </ul> | ||
=== Sistemas que utilizam esta Tecnologia === | === Sistemas que utilizam esta Tecnologia === | ||
− | ExtJs | + | <pre> |
− | + | Sistema ExtJs SVN Responsáveis Status | |
− | + | Academus 4.2 MVC academus Tiago/Marcelo Producao/Desenvolvimento | |
− | + | Almox 3 almox Tiago/Elton Producao | |
− | + | AvaliacaoIns... - - - Producao ??? | |
− | + | Login 4.2 login Márcio Producao | |
− | + | Minos 4.2 MVC minos_mvc Márcio Producao | |
− | + | Osiris 4.2 MVC osiris Tiago Producao | |
− | + | PIAD 4.2 MVC piad Tiago Desenvolvimento | |
− | + | pwmunioeste 4.2 MVC pwmunioeste Márcio Producao | |
− | + | Relatum - relatum Tiago Producao | |
+ | SGC 3 sgc Tiago Producao | ||
+ | SGCCR 4.2 MVC sgccr_mvc Tiago Producao | ||
+ | SGCV 3 sgcv Tiago Producao | ||
+ | SGEV 4.2 MVC sgev Débora Desenvolvimento | ||
+ | SGOC - - - Producao ??? | ||
+ | SGPDE 4.2 MVC sgpde_mvc Márcio Producao | ||
+ | SGPic 4.2 MVC sgpibic Lucas/Gean/Guilherme Producao/Desenvolvimento | ||
+ | SGPPLS 4.2 MVC sgppls_mvc Alessandro Producao | ||
+ | SGRD 4.2 MVC sgrd_mvc Alessandro Producao | ||
+ | SGRF 4.2 MVC sgrf Márcio Producao ??? | ||
+ | Stricto 3 stricto Lucas/Juliano Producao/Desenvolvimento Migrando p/ 4.2 MVC | ||
− | + | Desenvolvimento Parado/Extinto: | |
− | + | Pontus-Web 3 pontus_vraptor Elton Parado | |
− | + | SGA 3 sga_vraptor Tiago Extinto | |
− | + | SGE 3 sge_vraptor Tiago Extinto | |
− | + | SGEM 4.1 sgem Márcio Parado | |
− | + | SGLCC 4.2 MVC sglcc_mvc Márcio Parado | |
− | + | SGPE 4.1 sgpe Márcio Parado | |
+ | SGT 3 sgt Márcio Extinto | ||
+ | </pre> | ||
=== Árvore de diretorios de um projeto vRaptor+ExtJs === | === Árvore de diretorios de um projeto vRaptor+ExtJs === | ||
Linha 159: | Linha 196: | ||
<li>web.xml (modificação das configurações do servidor de aplicação) - raramente | <li>web.xml (modificação das configurações do servidor de aplicação) - raramente | ||
</ul> | </ul> | ||
+ | |||
+ | == Informações atualizadas: como criar novo projeto == | ||
+ | |||
+ | ===Passo-a-passo para criar um sistema=== | ||
+ | <li>criar sistema, padrão e transações no CCM | ||
+ | <li>criar projeto no gitlab (copiando do sistema SIF, que é o com a tecnologia mais atual). A descrição de como fazer isso, está no wiki do Git. | ||
+ | <li>criar arquivo properties em /usr/local/sistemas/config no servidor com banco do sistema | ||
+ | <li>escolher uma imagem para o sistema e colocar em cdn.unioeste.br/images/systems/ | ||
+ | <li>fazer deploy pelo deployer, dizendo qual é o grupo em que ficará | ||
+ | |||
+ | === Tecnologias do Projeto mais atual === | ||
+ | |||
+ | Os sistemas mais atualizados são o Relatum e o SIF.<br> | ||
+ | Estes sistemas estão utilizam o '''Maven''' como gerenciador de dependências, com uma dependência direta apenas, que é a biblioteca "sharedev-vraptor4", baseado no framework '''vRaptor 4'''. | ||
+ | Esta biblioteca contém funções gerais de autenticação, controle de auditoria e transações, logs, conexão com banco de dados, e outras funções comuns a todos os sistemas. | ||
+ | <br> | ||
+ | A interface é feita utilizando-se do framework '''ExtJs 6''' (versão 6.2). A biblioteca de classes comuns está no projeto "sharedev-ext6" e é incluída no projeto por meio de um submódulo do git. | ||
+ | A biblioteca contem a viewport padrão com menus básicos de usuário, funcionalidade de CRUD (grids e janelas de edição simples) e outras extensões do ExtJs para funcionalidades úteis. | ||
+ | |||
+ | == Servidores == | ||
+ | |||
+ | Servidores Java | ||
+ | *200.201.88.170 midas | ||
+ | *200.201.88.171 java1 | ||
+ | *200.201.88.172 java2 | ||
+ | *200.201.88.174 master | ||
+ | *200.201.88.175 java5 (slave) | ||
+ | *200.201.88.182 java6 | ||
+ | *200.201.88.183 java7 | ||
+ | *200.201.88.184 java8 | ||
+ | |||
+ | -No 170 há uma instância do Tomcat 8.*; Nos demais há duas instâncias do Wildfly 8.* em cada máquina, trabalhando em cluster. | ||
+ | * 170 rodam aplicações tomcat; | ||
+ | * 171,172,183,184 rodam aplicações wildfly (login, academus, etc); | ||
+ | * 174,175,182 rodam relatórios no wildfly; | ||
== Padronizações vRaptor== | == Padronizações vRaptor== | ||
Linha 196: | Linha 268: | ||
Campos Básicos | Campos Básicos | ||
− | + | ||
− | + | {| border="1" cellpadding="2" | |
− | + | !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 ||'''ck''' | ||
+ | |- | ||
+ | |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.'''Label''' ||text ||textos ||'''lb''' | ||
+ | |||
+ | |} | ||
Campos Avançados | Campos Avançados | ||
− | + | {| border="1" cellpadding="2" | |
− | + | !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''' | ||
+ | |} | ||
Campos Especiais | Campos Especiais | ||
− | + | {| border="1" cellpadding="2" | |
− | + | !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''' | ||
+ | |} | ||
Outros Componentes | Outros Componentes | ||
+ | {| border="1" cellpadding="2" | ||
+ | !Campo | ||
+ | !Tipo | ||
+ | !Uso | ||
+ | !Prefixo padrão | ||
+ | |- | ||
+ | |UxCdsGenerico || x ||Janela de cadastro genérica || x | ||
+ | |- | ||
+ | |'''UxPsqGenerico''' || x ||Janela de pesquisa genérica || x | ||
+ | |- | ||
+ | |'''UxGrdDuplo''' || x ||Painel com grid duplo (filtrados/selecionados) || x | ||
+ | |} | ||
+ | |||
+ | === Nomenclatura === | ||
<ul> | <ul> | ||
− | <li>''' | + | <li><strong>Campos de tela:</strong> Utilizar o padrão de prefixo correspondente 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''' |
− | |||
− | |||
</ul> | </ul> | ||
− | |||
== Funcionamento do Controle de Acesso/Transações == | == Funcionamento do Controle de Acesso/Transações == | ||
Linha 258: | Linha 373: | ||
... | ... | ||
</pre> | </pre> | ||
+ | |||
+ | == 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:''' <br /> | ||
+ | http://www.magentodeveloperleedsuk.co.uk/installing-oracle-java-jdk-7-on-ubuntu-12-04-step-by-step/ <br /> | ||
+ | Após instalar a nova JDK, remover a OpenJDK: sudo apt-get remove --purge openjdk-* <br /> | ||
+ | https://issues.apache.org/jira/browse/CASSANDRA-4275 | ||
== Alterações para execução do projeto no JBoss 7 == | == Alterações para execução do projeto no JBoss 7 == | ||
Linha 280: | Linha 407: | ||
</pre> | </pre> | ||
+ | |||
+ | == 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 | ||
+ | |||
+ | |||
+ | == Ferramentas para Desenvolvimento == | ||
+ | |||
+ | '''Úteis''' | ||
+ | * 7zip 9.20 http://www.7-zip.org/download.html | ||
+ | * notepad++ 6.6.7 http://notepad-plus-plus.org/ | ||
+ | * winscp 5.5.4 http://winscp.net/eng/download.php | ||
+ | * putty 0.6.3 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html | ||
+ | * teamviewer 9 http://www.teamviewer.com/pt/ | ||
+ | * tortoise 1.8.7 http://tortoisesvn.net/downloads.html | ||
+ | * git 1.9.5 https://git-scm.com/downloads | ||
+ | |||
+ | '''Desenvolvimento''' | ||
+ | * ireport 5.6.0 http://sourceforge.net/projects/ireport/ | ||
+ | * netbeans 8.0 http://netbeans.org/downloads/ | ||
+ | * probe 2.3.3 http://code.google.com/p/psi-probe/ | ||
+ | * jdk 7u60 http://www.oracle.com/technetwork/pt/java/javase/downloads/index.html | ||
+ | * jtds 1.3.1 http://sourceforge.net/projects/jtds/files/ | ||
+ | |||
+ | == Configurar proxy no maven == | ||
+ | * No projeto maven desejado, clique com o botão direito no item "Arquivos do Projeto" | ||
+ | * Escolha "criar settings.xml" | ||
+ | * Edite este arquivo e inclua o trecho abaixo, mudando o usuário e senha para o seu | ||
+ | <pre> | ||
+ | <proxies> | ||
+ | <proxy> | ||
+ | <id>proxy-unioeste</id> | ||
+ | <active>true</active> | ||
+ | <protocol>http</protocol> | ||
+ | <username>nome.sobrenome</username> | ||
+ | <password>SuaSenha</password> | ||
+ | <host>proxy.unioeste.br</host> | ||
+ | <port>8080</port> | ||
+ | <nonProxyHosts>*.unioeste.br</nonProxyHosts> | ||
+ | </proxy> | ||
+ | </proxies> | ||
+ | </pre> | ||
+ | * Após realizar esta configuração, clique com o botão direito no item "Dependências" e escolha "Fazer download de dependências..." | ||
+ | * Serão baixadas todas as bibliotecas de que o projeto depende | ||
+ | |||
+ | |||
+ | == Configurar Simulação de Usuário (Somente Leitura) com Filtro Personalizado == | ||
+ | * Adicione a transação "cSimulaUsuarioL" ao padrão que irá simular outros usuários | ||
+ | * Verifique as Prioridades dos Padrões: quanto menor o número, maior a prioridade e mais irá simular (ex: padrão 0 simula todos, padrão 3 somente simula 4,5,6,etc) | ||
+ | * Adicione uma SQL de filtro na tabela PdrTrnAvancado (pelo CCM ou da maneira ABAIXO), que deve retornar todos usuários (PssFsc_Codigo) utilizando o filtro @PssFsc_Codigo que será injetado do usuário logado. | ||
+ | |||
+ | insert into PdrTrnAvancado (Trn_Codigo,Pdr_Codigo,TrnTbl_NmTabela, TrnTblCmp_NmCampo, PdrTrnAvn_Filtro, TrnPrmAcs_Tipo, PdrTrnAvn_Comando) | ||
+ | values ('cSimulaUsuariol','PadraoMaiorQueQuerSimular','Geral','PadraoMenorASerSimulado','select PssFsc_Codigo from PssFisica where PssFsc_Codigo = @PssFsc_Codigo', 'G', '') | ||
+ | |||
+ | * Será usada a seguinte funcao para busca dos padroes possíveis: | ||
+ | exec spRtrVlrUnicoComResultSet 'Geral','PadraoMenorASerSimulado','PadraoMaiorQueQuerSimular','cSimulaUsuarioL' | ||
+ | |||
+ | : ''PadraoMenorASerSimulado'': padrão que se deseja simular | ||
+ | : ''PadraoMaiorQueQuerSimular'': padrão da pessoa que está querendo simular | ||
---- | ---- | ||
[[image:Voltar.jpg |Voltar]][[P%C3%A1gina_principal|Voltar a Página Inicial - Menu Sistemas]] | [[image:Voltar.jpg |Voltar]][[P%C3%A1gina_principal|Voltar a Página Inicial - Menu Sistemas]] |
Edição atual tal como às 13h03min de 10 de novembro de 2017
Voltar a Página Inicial - Menu Sistemas
Índice
- 1 Introdução
- 2 Informações atualizadas: como criar novo projeto
- 3 Servidores
- 4 Padronizações vRaptor
- 5 Padronizações ExtJS
- 6 Funcionamento do Controle de Acesso/Transações
- 7 Servidores Tomcat
- 8 Alterações para execução do projeto no JBoss 7
- 9 Monitoramento do JBoss 7 utilizando o "Applications Manager 10", da empresa ManageEngine
- 10 Ferramentas para Desenvolvimento
- 11 Configurar proxy no maven
- 12 Configurar Simulação de Usuário (Somente Leitura) com Filtro Personalizado
Introdução
Este documento descreve os padrões de desenvolvimento dos sistemas da UNIOESTE que utilizam a tecnologia vRaptor+ExtJS
Pequeno histórico
Em janeiro de 2010 iniciaram os estudos e desenvolvimento de sistemas na Unioeste em um padrão unificado, escrevendo aplicações web na plataforma java.
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
Guia para Estudo
- Apostila "Web ágil com VRaptor, Hibernate e AJAX" - http://www.caelum.com.br/apostila-vraptor-hibernate/
- Introdução ao Javascript - https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/A_re-introduction_to_JavaScript
- Apostila sobre Javascript - http://www.scriptbrasil.com.br/download/apostila/837/
- Introdução sobre Extjs MVC - http://blog.gustavohenrique.net/2012/02/introducao-ao-padrao-mvc-no-ext-js-4/
- Guia sobre arquitetura de sistemas em Extjs - http://docs.sencha.com/extjs/6.0/application_architecture/application_architecture.html
Sistemas que utilizam esta Tecnologia
Sistema ExtJs SVN Responsáveis Status Academus 4.2 MVC academus Tiago/Marcelo Producao/Desenvolvimento Almox 3 almox Tiago/Elton Producao AvaliacaoIns... - - - Producao ??? Login 4.2 login Márcio Producao Minos 4.2 MVC minos_mvc Márcio Producao Osiris 4.2 MVC osiris Tiago Producao PIAD 4.2 MVC piad Tiago Desenvolvimento pwmunioeste 4.2 MVC pwmunioeste Márcio Producao Relatum - relatum Tiago Producao SGC 3 sgc Tiago Producao SGCCR 4.2 MVC sgccr_mvc Tiago Producao SGCV 3 sgcv Tiago Producao SGEV 4.2 MVC sgev Débora Desenvolvimento SGOC - - - Producao ??? SGPDE 4.2 MVC sgpde_mvc Márcio Producao SGPic 4.2 MVC sgpibic Lucas/Gean/Guilherme Producao/Desenvolvimento SGPPLS 4.2 MVC sgppls_mvc Alessandro Producao SGRD 4.2 MVC sgrd_mvc Alessandro Producao SGRF 4.2 MVC sgrf Márcio Producao ??? Stricto 3 stricto Lucas/Juliano Producao/Desenvolvimento Migrando p/ 4.2 MVC Desenvolvimento Parado/Extinto: Pontus-Web 3 pontus_vraptor Elton Parado SGA 3 sga_vraptor Tiago Extinto SGE 3 sge_vraptor Tiago Extinto SGEM 4.1 sgem Márcio Parado SGLCC 4.2 MVC sglcc_mvc Márcio Parado SGPE 4.1 sgpe Márcio Parado SGT 3 sgt Márcio Extinto
Á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
Informações atualizadas: como criar novo projeto
Passo-a-passo para criar um sistema
Tecnologias do Projeto mais atual
Os sistemas mais atualizados são o Relatum e o SIF.
Estes sistemas estão utilizam o Maven como gerenciador de dependências, com uma dependência direta apenas, que é a biblioteca "sharedev-vraptor4", baseado no framework vRaptor 4.
Esta biblioteca contém funções gerais de autenticação, controle de auditoria e transações, logs, conexão com banco de dados, e outras funções comuns a todos os sistemas.
A interface é feita utilizando-se do framework ExtJs 6 (versão 6.2). A biblioteca de classes comuns está no projeto "sharedev-ext6" e é incluída no projeto por meio de um submódulo do git.
A biblioteca contem a viewport padrão com menus básicos de usuário, funcionalidade de CRUD (grids e janelas de edição simples) e outras extensões do ExtJs para funcionalidades úteis.
Servidores
Servidores Java
- 200.201.88.170 midas
- 200.201.88.171 java1
- 200.201.88.172 java2
- 200.201.88.174 master
- 200.201.88.175 java5 (slave)
- 200.201.88.182 java6
- 200.201.88.183 java7
- 200.201.88.184 java8
-No 170 há uma instância do Tomcat 8.*; Nos demais há duas instâncias do Wildfly 8.* em cada máquina, trabalhando em cluster.
- 170 rodam aplicações tomcat;
- 171,172,183,184 rodam aplicações wildfly (login, academus, etc);
- 174,175,182 rodam relatórios no wildfly;
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 | ck |
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.Label | text | textos | lb |
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 |
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 |
Outros Componentes
Campo | Tipo | Uso | Prefixo padrão |
---|---|---|---|
UxCdsGenerico | x | Janela de cadastro genérica | x |
UxPsqGenerico | x | Janela de pesquisa genérica | x |
UxGrdDuplo | x | Painel com grid duplo (filtrados/selecionados) | x |
Nomenclatura
- Campos de tela: Utilizar o padrão de prefixo correspondente 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
Ferramentas para Desenvolvimento
Úteis
- 7zip 9.20 http://www.7-zip.org/download.html
- notepad++ 6.6.7 http://notepad-plus-plus.org/
- winscp 5.5.4 http://winscp.net/eng/download.php
- putty 0.6.3 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
- teamviewer 9 http://www.teamviewer.com/pt/
- tortoise 1.8.7 http://tortoisesvn.net/downloads.html
- git 1.9.5 https://git-scm.com/downloads
Desenvolvimento
- ireport 5.6.0 http://sourceforge.net/projects/ireport/
- netbeans 8.0 http://netbeans.org/downloads/
- probe 2.3.3 http://code.google.com/p/psi-probe/
- jdk 7u60 http://www.oracle.com/technetwork/pt/java/javase/downloads/index.html
- jtds 1.3.1 http://sourceforge.net/projects/jtds/files/
Configurar proxy no maven
- No projeto maven desejado, clique com o botão direito no item "Arquivos do Projeto"
- Escolha "criar settings.xml"
- Edite este arquivo e inclua o trecho abaixo, mudando o usuário e senha para o seu
<proxies> <proxy> <id>proxy-unioeste</id> <active>true</active> <protocol>http</protocol> <username>nome.sobrenome</username> <password>SuaSenha</password> <host>proxy.unioeste.br</host> <port>8080</port> <nonProxyHosts>*.unioeste.br</nonProxyHosts> </proxy> </proxies>
- Após realizar esta configuração, clique com o botão direito no item "Dependências" e escolha "Fazer download de dependências..."
- Serão baixadas todas as bibliotecas de que o projeto depende
Configurar Simulação de Usuário (Somente Leitura) com Filtro Personalizado
- Adicione a transação "cSimulaUsuarioL" ao padrão que irá simular outros usuários
- Verifique as Prioridades dos Padrões: quanto menor o número, maior a prioridade e mais irá simular (ex: padrão 0 simula todos, padrão 3 somente simula 4,5,6,etc)
- Adicione uma SQL de filtro na tabela PdrTrnAvancado (pelo CCM ou da maneira ABAIXO), que deve retornar todos usuários (PssFsc_Codigo) utilizando o filtro @PssFsc_Codigo que será injetado do usuário logado.
insert into PdrTrnAvancado (Trn_Codigo,Pdr_Codigo,TrnTbl_NmTabela, TrnTblCmp_NmCampo, PdrTrnAvn_Filtro, TrnPrmAcs_Tipo, PdrTrnAvn_Comando) values ('cSimulaUsuariol','PadraoMaiorQueQuerSimular','Geral','PadraoMenorASerSimulado','select PssFsc_Codigo from PssFisica where PssFsc_Codigo = @PssFsc_Codigo', 'G', )
- Será usada a seguinte funcao para busca dos padroes possíveis:
exec spRtrVlrUnicoComResultSet 'Geral','PadraoMenorASerSimulado','PadraoMaiorQueQuerSimular','cSimulaUsuarioL'
- PadraoMenorASerSimulado: padrão que se deseja simular
- PadraoMaiorQueQuerSimular: padrão da pessoa que está querendo simular