Arquitetura e Integrações
A arquitetura adotada no Módulo de Gabinete da PDPJ é do tipo distribuída, sendo que os principais módulos da aplicação são microsserviços que rodam em ambiente nuvem escalonado de alto desempenho.
O uso desse tipo de arquitetura promove facilidades em diversos aspectos da implementação e operacionalização da PDPJ, entre elas estão o rápido desenvolvimento, manutenção e testes dos serviços, a robustez na segurança do sistema, o uso eficiente de recursos computacionais, a alta disponibilidade e escalabilidade, o monitoramento da saúde do sistema e a rápida atuação na mitigação de problemas.
As tecnologias empregadas nos módulos do sistema estão alinhadas àquelas utilizadas na Plataforma Digital do Poder Judiciário – PDPJ. Os microsserviços são desenvolvidos com ferramentas de código aberto, sendo o Java a principal linguagem de programação e são implementados com o uso do framework Spring Boot que embarca diversas ferramentas que facilitam a criação de soluções rápidas, robustas e confiáveis. A nível de infraestrutura de execução das aplicações, são adotadas tecnologias de conteinerização, clusterização e escalonamento, sendo o Docker e o Kubernetes as principais ferramentas utilizadas.
A figura abaixo ilustra as principais tecnologias em uso no Módulo de Gabinete da PDPJ:
O Módulo de Gabinete
O Módulo de Gabinete da PDPJ tem a intenção de abstrair as principais funcionalidades de um gabinete judicial, independentemente do sistema de processo eletrônico utilizado pelo Tribunal do usuário logado. Para desempenhar seu trabalho, o módulo necessita ser integrado com os sistemas de processo judicial eletrônico dos Tribunais.
A aplicação é composta por dois microsserviços, o frontend, desenvolvido em Angular e o backend desenvolvido em Spring boot. O backend possui um banco de dados próprio, com informações relevantes para o seu funcionamento, como tarefas, preferências do usuário e outras entidades a ele inerentes.
As minutas, por sua vez, ficarão armazenadas, até o momento da assinatura/juntada, exclusivamente no repositório S3 do Libre Office Online da PDPJ.
A integração do Módulo de Gabinete da PDPJ com os sistemas de processo eletrônico da ponta (ex. PJe, eProc, Projud) é feita através de chamadas de API (REST):
Os sistemas da ponta devem expor uma API REST com os endpoints necessários para:
- Consulta dos metadados de um processo
- Lista de processos conclusos (para a migração inicial)
- Perfis/lotações possíveis do usuário logado
- Assinar/juntar um ato judicial
APIs do Módulo de Gabinete
O módulo de gabinete implementa as seguintes APIs:
- Libre Office Online Cria/edita/exclui/lista minutas
- Pastas Lista/adiciona/edita/exclui pastas na localização do usuário logado
- Proxy para endpoints do sistema do Tribunal Realiza consultas no sistema do tribunal
- Sistemas Retorna listas de sistemas
- Tarefas Gerencia tarefas no sistema
- Usuários Retorna listas de usuários, sistemas vinculados e valida senha no SSO
Autenticação/autorização (*)
A API utiliza o Single Sign On (Keycloak) do CNJ para autenticar os endpoints. As regras de autorização são obtidas da base de dados do sistema de processo eletrônico do Tribunal (perfis e lotação).
Integração com o PJe
A integração do Módulo de Gabinete da PDPJ com o sistema de Processo Judiciário Eletrônico - PJe se dá através de um conjunto de componentes de software chamado PJe Light que deve ser implantado e executado na infraestrutura do Tribunal. O PJe Light é a implementação de diversos microsserviços que executam as funcionalidades e tarefas necessárias para a integração do módulo de gabinete com o PJe. Além do PJe Light, a integração depende também de outros componentes, como o próprio Pje e sua base de dados e o servidor SSO (keycloak) PJe KC.
Os microsserviços do Módulo de Gabinete são executados em nuvem no contexto da infraestrutura da PDPJ, já o PJe Light e o PJe são executados na infra do Tribunal. A figura abaixo ilustra a localização dos componentes no contexto da infraestrutura da PDPJ e do Tribunal:
PJe Light
O PJe Light é a implementação de diversos microsserviços que executam as funcionalidades e tarefas necessárias para a integração do módulo de gabinete com o PJe e é composto pelos seguintes microsserviços:
- PJe-API Expõe a fachada rest e possui o grosso da regra negocial (em especial, validações de segurança e sigilo)
- PJe-Jobs Possui os jobs de integração com o módulo de Gabinete da PDPJ
- PJe-Binários Encapsula o acesso ao minio/repositório s3 (baseado no projeto pje-docs do TJDFT)
- PJe-Assinaturas Implementa as regras de validação de assinaturas com certificado digital
- PJe-PDFs Implementa a geração de PDFs dos documentos e dos processos
PJe Light API
Backend PJe API expõe fachada REST para consumo do Gabinete
Este projeto pretende focar apenas nas funcionalidades consideradas integrantes do "core" business do PJe, ou seja, lançamento de movimentações, juntada de documentos e expedientes, assinatura, e demais funções básicas de todo processo eletrônico.
- Domínio Auxiliar Retorna listas de tipos de documentos ativos de uso interno e listas de centrais de mandado
- Endereços Cria novos endereços e realiza buscas em endereços existentes
- Lembretes Cria/edita/exclui/lista lembretes (post-it) em um processo e/ou documento
- Modelos Lista modelos, no formato HTML
- Órgãos Julgadores Retorna/Atualiza as informações adicionais do órgão julgador, pertinentes ao PJe Light
- Pastas Lista/adiciona/edita/exclui pastas na localização do usuário logado
- Documentos Faz a gestão de documentos no sistema
- Eventos - Movimentações Realiza a gestão de movimentações processuais
- Expedientes Cria/salva expedientes que devem ser assinados pelo juiz, para criação posterior
- Partes Retorna a lista de partes de um processo
- Processos Realiza a busca de processos e faz concluso ao juiz(a) um processo
- Tarefas Gerencia tarefas no sistema
- Usuários Retorna listas de usuários, pessoas, localizações e papéis
Job de Integração
Executa periodicamente os jobs que atendem as necessidades negociais do projeto
- Encaminha para o Gabinete as tarefas de conclusão
- Finaliza as tarefas devolvidas pelo Gabinete, movimentando a tarefa no fluxo
- Só pode possuir uma instância (pod) por vez em execução
Arquitetura de Software
A figura abaixo detalha a arquitetura de software da integração com o PJe:
Ambiente de Execução
Os microsserviços que compõem o módulo de gabinete e também o PJe Light são executados em containeres docker orquestrados pelo Kubernetes. Eles possuem arquivos de implantação (deployment) específicos. Essa configurações definem diversas propriedades de execução do microsserviço, tais como configurações de cpu, memória, portas, etc e são especificadas em um arquivo YAML.
Um objeto importante no kubernetes é o pod, que é uma unidade computacional que executa o(s) microsserviço(s). Para garantir a alta disponibilidade e escalabilidade do sistema, o kubernetes pode criar réplicas de pods para aumentar a capacidade de processamento e atender a uma demanda crescente da aplicação. A esta funcionalidade é dado o nome de escalonamento horizontal. No entanto, nem toda aplicação pode ter mais de uma unidade computacional (pod) rodando ao mesmo tempo. Todos os microsserviços do Módulo de Gabinete da PDPJ e do PJe Light podem ser escalonados horizontalmente, com execeção de um, o PJe Light Jobs. Esse serviço precisa ser configurado para executar em apenas uma réplica e por isso ele é configurado em um pod exclusivo.
A figura abaixo ilustra a infra basíca no kubernetes do Módulo de Gabinete e do PJe
Duas outras configurações de execução devem ser implementadas no ambiente do Kubernetes na infraestrutura do tribunal.
- É necessário configurar o objeto do tipo Secret com as informações confidenciais utilizadas pelos recursos da aplicação.
- Também deve ser configurado um objeto do tipo Ingress para expor os serviços HTTP e HTTPS externamente para o tráfego da rede.
O que precisa ser feito pelo Tribunal
As ações adicionais abaixo devem ser realizadas pelo Tribunal, impreterivelmente
1. Acrescentar no PJe Legacy 2 (dois) arquivos incluídos/modificados na branch PJEII-26582
- Acrescentar no PJe Legacy os seguintes arquivos:
- TarefaRestController.java - expõe endpoints necessários para uso do PJe Light na sua integração com o módulo de Gabinete (ex, o endpoint para movimentar a tarefa no fluxo);
- LocalizacaoAssignment.java - foi modificado para não dar erro quando o papel associado ao Nó de desvio não está devidamente configurado na aplicação;
- Branch PJEII-26582;
- TarefaRestController.java:
- Para movimentar a tarefa no fluxo, a estratégia adotada foi movimentar a task_instance para o Nó de desvio e, após, movimentar a task_instance criada na transição anterior para o Nó de término;
- Com isso, o comportamento quando a tarefa no módulo de Gabinete for cancelada ou finalizada com sucesso será sempre o mesmo, qual seja, a tarefa no Legacy vai para o próximo passo do fluxo (ex, “(vCiv) Despachados”).
■ Obs: no caso de cancelamento, o PJe Light lança no histórico de movimentações o evento “Cancelada a conclusão” (cód. 15101 no SGT).
2. Insert na tabela tb_orgao_julgador_info (schema “api”) o id dos órgãos julgadores participantes do piloto
- Insert na tabela tb_orgao_julgador_info (schema “api”) o id dos órgãos julgadores participantes do piloto:
- Essa informação é utilizada pelo Job de remessa das conclusões para o Módulo de Gabinete, para saber os órgãos cujas tarefas devem ser exportadas;
- Neste primeiro momento, apenas os órgãos Vara Única de Parelhas e Juizado Especial de Parelhas.
3. Promover no Openshift o projeto “pje-light” para produção
- Promoção, no Openshift, do projeto “pje-light” para produção:
- Configurar a secret “pje-light-env” com os dados pertinentes para o ambiente produtivo;
- Configurar a secret “registry-cnj” (dados idênticos aos que constam no ambiente de homologação).
- Domínio Auxiliar Retorna listas de tipos de documentos ativos de uso interno e listas de centrais de mandado
- Endereços Cria novos endereços e realiza buscas em endereços existentes
- Lembretes Cria/edita/exclui/lista lembretes (post-it) em um processo e/ou documento
- Modelos Lista modelos, no formato HTML
- Órgãos Julgadores Retorna/Atualiza as informações adicionais do órgão julgador, pertinentes ao PJe Light
- Pastas Lista/adiciona/edita/exclui pastas na localização do usuário logado
- Documentos Faz a gestão de documentos no sistema
- Eventos - Movimentações Realiza a gestão de movimentações processuais
- Expedientes Cria/salva expedientes que devem ser assinados pelo juiz, para criação posterior
- Partes Retorna a lista de partes de um processo
- Processos Realiza a busca de processos e faz concluso ao juiz(a) um processo
- Tarefas Gerencia tarefas no sistema
- Usuários Retorna listas de usuários, pessoas, localizações e papéis