Trata-se do projeto monlítico e legado do PJe. Neste projeto encontram-se diversos contextos negociais emaranhados

1. Quick start

Instruções para a inicialização de maneira rápida da aplicação. Nesta seção não se deve entrar nos detalhamentos técnicos da aplicação. O Objetivo desta seção é apenas descrever como a aplicação pode ser inicializada da maneira mais simples possível.

2. Tecnologias empregadas

O pje-legacy possui um arcabouço de tecnologias legadas, em sua maioria já descontinuadas pela comunidade. Diante desse cenário tem-se uma das motivações da remodelagem arquitetural, com intuito de renovação do parque tecnológico do ecossistema PJe.

2.1. Linguagem de programação

  • Java versão 8;

  • Javascript;

  • HTML;

2.2. Framework(s)

  • Jboss SEAM 2.2.2;

  • JSF 1.2;

2.3. Armazenamento dos dados

  • PostgreSQL 9.4 ou superior;

  • JCR-Storage

2.4. Outros temas

  • Quartz

  • EhCache

  • Elasticsearch

3. Visão arquitetural

Arquitetura pje-legacy

image

4. Dependências

TODO

5. Configuração da aplicação

5.1. Profiles do Maven

Table 1. Profiles de aplicação
Profile Descrição

producao

Configura aplicação com logs menos verbosos e mocks desativados.

UseEhCache

Configura a aplicação para utiliza cache de segundo nível do Hibernate

db-storage-postgres

Configura a aplicação para armazenar dados binário em filesystem utilizando PostgreSQL

jcr-storage

Configura a aplicação para armazenar dados binário em filesystem utilizando JCR

5.2. Variáveis de ambiente

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

ENV_PJE2_CLIENTE_URL

http://localhost:4200

Endereço do frontend Angular

ENV_EUREKA_CLIENT_HOSTNAME

null

Permite definir o hostname da instancia registrada no eureka

ENV_EUREKA_CLIENT_SECURE_PORT

443

Permite definir a porta para o protocolo https

ENV_EUREKA_CLIENT_SECURE_PORT_ENABLED

false

Permite definir se a aplicação será registrada com o protocolo https

ENV_EUREKA_CLIENT_NONSECURE_PORT

true

Permite definir a porta para o protocolo http

ENV_EUREKA_CLIENT_NONSECURE_PORT_ENABLED

8080

Permite definir se a aplicação será registrada com o protocolo http

ENV_PJE2_CLOUD_APP_NAME

pje-legacy

Nome do serviço pje-legacy. Cada instalação do pje terá um nome de serviço único. Ex.: PJE-TJXY-1G

ENV_PJE2_CLOUD_URL_GATEWAY

<vazio>

Endereço do API Gateway. Este valor é facultativo. Caso não informado o pje-legacy irá descobrir através do discovery

ENV_PJE2_CLOUD_REGISTRAR

true

Indica que a aplicação deve se registrar no discovery

ENV_EUREKA_SERVER_URL

http://localhost:8761/eureka

URL do serviço de descoberta eureka server

ENV_PJE2_CLOUD_RABBIT_PUBLISH_MESSAGES

true

Indica que a aplicação de publicar mensagens no broker RabbitMQ

ENV_PJE2_CLOUD_RABBIT_HOST

localhost

Host do broker de mensagens, sem protocolo e sem porta

ENV_PJE2_CLOUD_RABBIT_VIRTUALHOST

/

Path do virtual host do broker de mensagens

ENV_PJE2_CLOUD_RABBIT_USERNAME

guest

Nome de usuário da aplicação no broker de mensagens

ENV_PJE2_CLOUD_RABBIT_PASSWORD

guest

Senha de usuário da aplicação no broker de mensagens

ENV_PJE2_CLOUD_RABBIT_EXCHANGENAME

pje.exchange

Nome da exchange para onde a aplicação publicará as mensagens

ENV_PJE2_CLOUD_RABBIT_QUEUENAME

pje.legacy

Nome da fila que a aplicação receberá as mensagens do broker de mensagens

Table 3. Variáveis de ambiente em caráter experimental (em desenvolvimento)
Nome da variável Valor padrão Descrição

ENV_PJE2_AUTH_KEYCLOAK_URL

http://localhost:8280

Url do keycloak

ENV_PJE2_AUTH_KEYCLOAK_AUTHSERVER_URL

http://localhost:8280/auth

Endpoint de autorização do keycloak

ENV_PJE2_AUTH_KEYCLOAK_REALM

realm-name

Nome do realm do keycloak

ENV_PJE2_AUTH_KEYCLOAK_RESOURCE

client-id

Nome do client do keycloak para a aplicação

ENV_PJE2_AUTH_KEYCLOAK_SECRET

secret

Senha do client do keycloak

ENV_PJE2_AUTH_KEYCLOAK_USEKEYCLOAK

false

Indica se a aplicação deve usar o keycloak para autenticação

ENV_PJE2_AUTH_KEYCLOAK_USEKEYCLOAK_ROLE

false

Indica se a aplicação dever carregar os papeis de usuário do keycloak

6. Papeis e/ou recursos

TODO: Incluir lista de papeis com descrição da regra aplicada a cada papel.

7. Interações com o barramento de mensagens

O pje-legacy realiza publicação de mensagens no broker

7.1. Filas que escuta

O pje-legacy ainda não escuta nenhuma fila do brker

7.2. Mensagens que produz

7.2.1. Movimentações processuais

Objetivo

Lançar mensagem ao broker sempre que uma movimentação processual for registrada para um processo

Classe e método
LancadorMovimentoService.lancarMovimento(ProcessoEvento movimentoProcesso, boolean autoFlush)
Payload da mensagem
{
    idProcessoEvento : "",
    idProcesso : "",
    idProcessoDocumento : "",
    idUsuario : "",
    dataAtualizacao : "",
    descricaoEvento : "",
    idJbpmTask : "",
    idProcessInstance : "",
    idTarefa : "",
    nomeUsuario : "",
    cpfUsuario : "",
    cnpjUsuario : "",
    processado : "",
    verificadoProcessado : "",
    idProcessoEventoExcludente : "",
    visibilidadeExterna : "",
    observacao : "",
    textoFinalInterno : "",
    textoFinalExterno : "",
    textoParametrizado : ""
}

7.2.2. Retificação de partes

Objetivo

Enviar mensagem ao broker sempre que uma parte for incluída, excluída ou inativada de um processo através da retificação de autuação.

Classe e método
ProcessoParteHome.inativarParticipante();
ProcessoParteHome.inserir();
Payload da mensagem
{
    numeroProcesso : "",
    idProcessoPje: "",
    idProcessoPartePje: "",
    idPessoaPje: "",
    rji: "",
    situacaoParte: ""
}

8. Interações com outros serviços

Table 4. Interações com outros micro serviços
Nome do serviço Tipo de interação Descrição

criminal

Síncrona

Ao protocolar um processo com classe em agrupamento do tipo CRI. A aplicação realiza POST no serviço criminal para cadastramento do processo criminal. Caso o processo não seja cadastrado o protocolo não é realizado no pje-legacy

9. Eventos de webhook

N/A