Serviço destinado ao módulo criminal do PJe.

1. Quick start

Restaurar uma base limpa
$ psql -U postgres -h localhost -d criminal < "./src/main/resources/db/base/criminalV1.sql"
O banco do criminal dever ter enconding UTF-8
Clonar o repositório
$ git clone git@git.cnj.jus.br:pje2/pje2-servicos/criminal.git
Compilar o projeto usando maven
$ mvn clean package
Executar a aplicação
$ java -jar target/crimnal*.jar

2. Tecnologias empregadas

O serviço criminal foi construído com SpringBoot 2. Este serviço fornece API para manipulação e recuperação de seus recursos utilizando REST. Possui banco de dados relacional com parte das informações armazenadas em conceito NOSQL.

Utiliza o broker de mensagens RabbitMQ para consumir mensagens da exchange do PJe (pje.exchange).

2.1. Linguagem de programação

Java versão 8.

2.2. Framework(s)

SpringBoot 2.

2.3. Armazenamento dos dados

Banco relacional PostgreSQL. Parte das informação são amrazenada em JSONB.

2.4. Outros temas

Os logs da aplicação podem ser enviados à um serviço REDIS para que seja consumido pelo Logstash e indexado no ElasticSearch.

Os logs de auditoria da aplicação estão sendo armazenados na tecnologia Envers. Possui demanda para migração deste método de auditoria, de modo que os logs sejam indexados no elasticsearch.

3. Visão arquitetural

Arquitetura do serviço criminal

image

4. Dependências

Table 1. Dependências
Serviço Tipo Descrição

PJe-Legacy

Autenticação e autorização

Depende do PJe para validar se o usuário está autenticado e se possui os papeis necessários para a visualização dos recursos

PJe-Legacy

Permissão negocial

Depende do PJe para validar se um usuário tem permissão para visualizar determinado processo criminal

RabbitMQ

Mensagens

Depende do broker de mensagens para receber atualizações ou notificações de outros serviços

5. Configuração da aplicação

O serviço criminal pode ser configurado de acordo com as seguintes variáveis de ambiente:

Table 2. Variáveis de ambiente
Nome da variável Valor padrão Descrição

CRIMINAL_PORT

8480

Porta do serviço

CRIMINAL_APP_NAME

criminal

Nome do serviço

CRIMINAL_DB_URL

jdbc:postgresql://localhost:5432/criminal?stringtype=unspecified

Url do banco de dados do serviço

CRIMINAL_DB_USER

postgres

Usuário do banco de dados

CRIMINAL_DB_PASSWORD

P123456

Senha de usuário do banco de dados

CRIMINAL_RABBITMQ_HOST

localhost

Host do broker de mensagens

CRIMINAL_RABBIT_USERNAME

criminal

Usuário do broker de mensagens

CRIMINAL_RABBIT_PASSWORD

criminal

Senha de usuário do broker de mensagens

CRIMINAL_RABBIT_VHOST

/

Virtual host do broker de mensagens

CRIMINAL_RABBIT_CONNECTION_TIMEOUT

500

Tempo para timout de tentativa de conexão com o broker de mensagens em milisegundos

EUREKA_SERVER_DEFAULT_ZONE

http://localhost:8761/eureka

Url do service discovery

EUREKA_CLIENT_ENABLED

true

Indicativo de que o serviço deve ou não se registrar no service discovery

CRIMINAL_MANAGEMENT_PORT

8481

Porta de monitoramento do serviço

6. Configuração do armazenamento de dados

Este serviço utiliza banco de dados PostgreSQL versão 9.6 ou superior. A base de dados deve ter encoding UTF-8. Um script de base limpa pode ser encontrado na pasta:

./src/main/resources/db/base/

7. Papeis e/ou recursos

Não contém

8. Interações com o barramento de mensagens

O serviço criminal interage com o barramento de mensagens consumindo mensagens de outros serviços para sincronizar seus dados

8.1. Filas que escuta

O serviço criminal consome mensagens da fila pje.criminal.

São direcionadas para esta fila mensagens que cheguem à exchange pje.exchange com os routing keys *.\*.*.ProcessoParte.\* e *.\*.*.ProcessoEvento.\*

8.2. Mensagens que produz

Este serviço não envia mensagens ao broker de mensagens.

9. Interações com outros serviços

O serviço criminal realiza dois tipos de interações com o serviço pje-legacy.

9.1. Autenticação de usuário

A autenticação para acesso as funcionalidades do serviço é realizada no serviço pje-legacy. Ao acessar um endpoint do serviço criminal é executada uma requisição ao pje-legacy passando o jsessionid do usuário para validação de autenticação do usuário.

9.2. Validação de acesso ao processo criminal

Quando um processo criminal é acessado, o serviço criminal faz consulta ao pje-legacy para saber se o usuário tem acesso àquele processo.

10. Eventos de webhook

N/A