Skip to content

Arquitetura básica para treinamento Angular 5 do Núcleo de Arquitetura e Inovação da Conab - Companhia Nacional de Abastecimento.

License

Notifications You must be signed in to change notification settings

wescleysrn/nuarq-treinamento

Repository files navigation

NUARQ/CONAB - TREINAMENTO ANGULAR 5

DESCRIÇÃO GERAL

O objetivo deste projeto é servir como started project para o treinamento Angular 5, realizado pelo Núcelo de Arquitetura e Inovação da Conab - Companhia Nacional de Abastecimento, uma empresa pública brasileira vinculada ao Ministerio da Agricultura.

Com base neste projetos as equipes de desenvolvimento da Conab poderão clonar e iniciar rapidamente um projeto web com tecnologia Angular 5, tendo uma estrutura preparada para realização de autenticação baseada em nosso componente Autorization Server que utiliza tecnologia Oauth2, além de ter a disposição as camadas necessárias para produzir funcionalidades os desenvolvedores terão códigos de exemplos bem comentados para auxiliar no aprendizado durante o treinamento.

Este projeto faz parte de uma proposta maior idealizada para implantar uma arquitetura corporativa baseada em micro serviços na Companhia, provendo escalabilidade, robustez e principalmente segurança e proteção aos serviços baseado em REST produzidos no ambito corporativo.

PROCEDIMENTOS PARA SUA UTILIZAÇÃO

Baixando e incluindo dependências

Para iniciar o treinamento o desenvolvedor deve baixar o started project deste repositório, por meio do comando `git clone https://github.com/wescleysrn/nuarq-treinamento.git treinamento`, via terminal. Após baixar e acessar a pasta do projeto deve-se rodar o comando `npm install` para gerar as dependências necessárias para o projeto.

Após baixar o started project e instalar as dependências o desenvolvedor deve editar o arquivo constante em src/app/shared/util/api.util.ts com os caminhos de host's e credenciais de API-KEY que será informado por um membro da NUARQ.

Rodando o projeto

Uma vez baixado e instalado as dependências, basta executar o comando `ng serve` para rodar o projeto que ficará disponível no contexto `http://localhost:4200/`, assim qualquer alteração realizada no projeto irá refletir automaticamente na visualização no browser.

O desenvolvedor deverá realizar login de acesso, informando para isso um usuário e senha válido constante na base LDAP de desenvolvimento da Companhia, conforme mostrado na imagem a seguir:

Gerando funcionalidades

Para criação de artefatos pode-se rodar o comando `ng generate component component-name` na pasta onde se quer criar o novo componente, vale lembrar que também é possível gerar outros artefatos bastando informar o tipo, como demonstrado a seguir `ng generate directive|pipe|service|class|guard|interface|enum|module`.

Trabalhos futuros irão estudar o mecanismo utilizado pelo Angular nessa criação e buscar a criação de componentes archetypes que ficarão no repositório privado da companhia, na tentativa de usar algo como `ng generate conab-crud-padrao vistoria-fiscal`, por exemplo.

Executando testes

O desenvolvedor poderá executar casos de testes por meio do comando `ng test`, que irá executar testes unitários via [Karma](https://karma-runner.github.io).

Para realizar testes fim-a-fim pode-se executar o comando `ng e2e` que irá rodar testes via [Protractor](http://www.protractortest.org/).

Trabalhos futuros irão produzir e disseminar conhecimento sobre a forma como trabalhar testes nos projetos web na Conab, abordando Karma, Jasmine, Protractor, etc.

Realizando Deploy

O procedimento de deploy será realizado por meio do plugin `frontend-maven-plugin` que possibilita a execução de serviços como o [YARN](https://yarnpkg.com/) que está sendo usado para geração de .war do projeto. Pode ser verificado que o projeto possue um arquivo pom.xml em sua raiz para esse proposito, sendo que o plugin em conjunto com o YARN executa o comando `ng build --prod`.

Mais detalhes será monstrado durante o treinamento. Abaixo podemos vê o trecho de configuração do plugin no arquivo pom.xml mencionado.

O .war poderá ser publicado no servidor de aplicação da Companhia mediante procedimento normal de deploy dos resources server's Java.

PRINCIPAIS FUNCIONALIDADES

Guardião das rotas

O guardião das rotas é um artefato que possibilita a verificação de permissão e autorização para cada recurso acessado na camada de apresentação, sendo que aqui neste repositório publico está incompleto, mas que seu funcionamento será tratado durante do treinamento. Este artefato é que é responsável por direcionar o usuário a tela de login, caso este não possua access token, ou para uma tela de não autorizado, caso um usuário devidamente autenticado tente acessar um recurso que não tenha acesso.

A seguir é mostrado a imagem deste importante componente, curcial para o funcionamento dessa arquitetura:

Component display erro

O objetivo é exemplificar como podemos trabalhar a modularização de pequenos componentes para funçes comuns e rotineiras, esse componente é empregado em campos de formulário para que juntamente com a estrutura de form-padrao permite a indicação de validação de campo, tornando sua borda vermelha e apresentando a mensagem do erro.

A seguir é mostrado a imagem do componente em questão:

Interceptor Oauth2

Talvez o componente central da proposta, o interceptor Oauth2 irá orquestrar o funcionamento da aplicação, servindo como proteção aos recursos do sistema, realizando tarefas como refresh token, tela de bloqueio e tratamento de exceções.

Caso de uso Pessoa

O caso de uso Pessoa, percorre todas as camadas do projeto até a realização de chamadas a API rest do nosso projeto resource server deste treinamento, sendo um bom exemplo para produção dos demais exercicios durante o treinamento.

CONCLUSÃO

Este projeto embora facilite o inicio dos trabalhos, deverá ser melhorado e versionado em repositório privado da Companhia, passando por serviços de melhoria do designer, aplicando identidade visual, publicação de artefatos de dependências em nosso servidor CDN, trabalhos de definições de projetos de dependências a serem utilizados, entre outros.

O Núcleo espera com esse trabalho padronizar os novos projetos na Companhia, nivelar o conhecimento das equipes de desenvolvimento e aprender juntos novos conhecimentos visando a melhoria e qualidade dos produtos de software produzidos na Conab - Companhia Nacional de Abastecimento.

About

Arquitetura básica para treinamento Angular 5 do Núcleo de Arquitetura e Inovação da Conab - Companhia Nacional de Abastecimento.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published