1. Infraestrutura básica com docker (pje-dev-core)

A arquitetura baseada em micro serviços do PJe 2.1 depende de alguns recursos de infraestrutura. Estes recursos são responsáveis por prover a integração necessária para o ambiente. Entre estes recursos estão: serviço de descoberta (Eureka), API gateway (Zuul) e broker de mensagens (RabbitMQ).

Para facilitar a composição do ambiente de desenvolvimento foi criada a imagem docker pje-dev-core. Nesta imagem temos todos os recursos básicos para que o desenvolvedor possa começar a trabalhar de maneira mais rápida, sem ter que subir e configurar todos os serviços.

2. Executando um container de pje-dev-core

Para este ambiente é necessário ter o Docker instalado na máquina.

Para executar o container com os serviços básico do ambiente PJe 2.1 basta o seguinte comando em um docker host:

$ sudo docker run --rm -d -p 8180:8180 -p 8181:8181 -p 8761:8761 -p 5672:5672 -p 15672:15672 registry.cnj.jus.br/pje2/pje-dev-core:latest

Ao executar o container temos acesso aos seguintes serviços:

Serviço Tecnologia Url

pje2-discovery-service

Netflix Eureka

http://localhost:8761

pje2-gateway-service

Netflix Zuul

http://localhost:8180

message-broker

RabbitMQ

http://localhost:5672

message-broker-mangement

RabbitMQ

http://localhost:15672

3. Subindo o frontend Angular (PJE2-WEB)

O PJe conta agora com um projeto Angular para frontend. Este projeto visa a substituição gradual das telas JSF atuais. O novo cliente PJE2-WEB com Angular foi construído de forma a se comunicar com toda API de serviços do PJe, e prover os serviços ao usuário final através de uma experiência mais moderna e amigável.

3.1. Clonando o projeto PJE2-WEB

O PJE2-WEB é um projeto Angular padrão gerado com angular-cli, portanto antes de começar certifique-se de que você tem o Node.js na versão 8.x ou 10.x instalado em sua máquina.

Com o Node.js instalado já podemos instalar o angular-cli:

$ npm install -g @angular/cli

Após a instalação do angular-cli faça o clone do repositório do PJE2-WEB:

Com o repositório clonado iremos instalar as depedências do projeto:

$ npm install

3.2. Iniciando o frontend PJE2-WEB

Para executar nosso frontend usaremos o próprio angular-cli, que já nos provê um servidor para desenvolvimento. Na raiz do projeto PJE2-WEB execute:

$ ng serve --host=0.0.0.0 --disable-host-check

Este comando irá compilar e servir o projeto frontend em http://localhost:4200

3.3. Frontend com docker

O frontend Angular também pode ser utilizado através da imagem docker pje-frontend

$ docker run -p 4200:80 registry.cnj.jus.br/pje2/pje-frontend:latest

4. PJe legado para o ambiente de micro serviços

O projeto PJe deve ser configurado para que se integre ao ambiente de micro serviços. Na nova arquitetura o PJe passou por diversas alteração para que pudesse fazer parte desse novo ambiente. Hoje o projeto é um grande monolito, com diversos emaranhamentos negociais que o torna um projeto de difícil manutenção e muito sujeito a falhas. Com a nova arquitetura quebraremos aos poucos o monolito, criando novos micro serviços que atendam a contextos de negócio bem definidos.

4.1. Configurando o PJe

Para se integrar ao ambiente o PJe precisa de configurações como: url do pje2-discovery-service, url do gateway, url do rabbitmq entre outras configurações possíveis. Vamos nos concetrar nas configurações básicas para o ambiente de desenvolvimento.

Estas configurações serão passadas ao PJe através de variáveis de ambiente.

Também é possível passar estas configurações por meio de variáveis do maven ou arquivo de propriedades (integracao.properties).
Não esqueça de subir o PJe com bind para o endereço 0.0.0.0, do contrário o gateway não conseguirá enviar requisições ao PJe.

As seguintes variáveis de ambiente deverão ser passadas ao servidor de aplicação do PJe com os respectivos valores:

Variável Valor Descrição

ENV_PJE2_CLOUD_APP_NAME

pje-legacy

Nome do serviço PJe

ENV_PJE2_CLOUD_REGISTRAR

true

Indica se o PJe deve se registrar no service discovery

ENV_EUREKA_SERVER_URL

http://localhost:8761/eureka

Endereço para registro no service discovery

ENV_PJE2_CLIENTE_URL

http://localhost:4200

Endereço do fontend

ENV_PJE2_CLOUD_URL_GATEWAY

http://localhost:8180

Endereço do API Gateway

ENV_PJE2_CLOUD_RABBIT_PUBLISH_MESSAGES

true

Indica se o PJe deve publicar mensagens para o broker

Com as variáveis configuradas é só subir o servidor de aplicação. No startup da aplicação o PJe deverá se registrar no pje2-discovery-service. Para verificar quais serviços estão registrados acesse http://localhost:8761. Os seguinte serviços devem estar registrados no painel do Eureka:

  • gateway-service

  • pje-legacy