Serviço Autos Digitais do PJe
Introdução
A partir da arquitetura 2.1 do PJe, que visa a transição gradual do sistema monolítico para um sistema de microsserviços, faz-se necessária a reescrita do código para as novas linguagens e tecnologias a serem implementadas. Dessa forma, será possível retirar a lógica emaranhada no monolito do PJe Legacy, criando serviços independentes e com responsabilidades bem definidas.
Para isso, por meio do Programa Justiça 4.0, desenvolvido em parceria com o Programa das Nações Unidas para o Desenvolvimento (PNUD), foi iniciado projeto para refatoração do módulo de visualização dos autos digitais do PJe, executado no âmbito de instrumento de Long Term Agreement daquela organização com a empresa DB Server. O objetivo é evoluir o PJe, visando prepará-lo para adoção, em larga escala, de uma arquitetura modular, baseada em microsserviços, e da separação estrutural dos artefatos de frontend e backend.
Em análise realizada pela Divisão de Gestão do Processo Judicial Eletrônico, setor do Departamento de Tecnologia da Informação e Comunicação do CNJ, observou-se que a funcionalidade de apresentação dos autos digitais é uma das que demandam maior quantidade de recursos de processamento e memória tanto do servidor de aplicação quanto do banco de dados. Isso se deve a diversos fatores, como a complexidade da funcionalidade, as tecnologias utilizadas e a arquitetura atual, que possui forte acoplamento entre os componentes, número elevado de dependências e blocos monolíticos, que dificultam correções e evoluções, além de prejudicar a escalabilidade do sistema como um todo.
Assim, optou-se por gerar um MVP (Mínimo Produto Viável) que contivesse as funcionalidades básicas da tela de autos digitais, migrando o frontend de Java JSF para Angular, como objetivo dessa primeira etapa da refatoração
Proposta arquitetural
Inicialmente, será implementada arquitetura similar àquela do módulo de painel de usuário do PJe-Web a partir da criação de componentes para implementação de uma Aplicação SPA (Single Page Application), utilizando Angular. No backend, será realizada a comunicação com o PJe Legacy por meio da exposição de APIs REST, utilizando a linguagem Java (JBoss Seam).
A figura abaixo ilustra a arquitetura proposta:
Futuramente, o módulo poderá ser evoluído para ter o backend independente do PJe Legacy, tornando-se um serviço autônomo e integrado aos demais módulos do PJe.
Especificação negocial
Para a refatoração das funcionalidades de autos digitais, foi necessário realizar o levantamento de requisitos a partir do código existente no PJe Legacy, por meio de uma abordagem de análise composta das seguintes etapas:
- Em um primeiro momento, foram especificadas as histórias de usuário unitárias dos autos digitais, utilizando a abordagem exploratória dos recursos dos autos, a partir da interface da versão de produção do PJe;
- Na sequência, foi realizada a escrita preliminar dos critérios de aceitação das histórias de usuário, identificados a partir da mesma abordagem exploratória;
- Depois disso, os desenvolvedores, com base na análise do código-fonte da aplicação e dos requisitos iniciais das histórias avaliadas, realizaram, por meio da engenharia reversa, o mapeamento de regras negociais adicionais, complementação das regras negociais preliminares e levantamento dos critérios técnicos envolvidos;
- A partir da atividade de engenharia reversa, as histórias de usuário foram complementadas e tiveram os critérios de aceitação enriquecidos com o material gerado na engenharia reversa;
As histórias de usuário elaboradas estão documentadas no Jira do CNJ. Por meio deste exercício, obteve-se um ganho significativo em documentação do PJe, além de garantir que as funcionalidades desenvolvidas viessem a reproduzir os critérios negociais documentados.
Todas as histórias se relacionam ao Épico "guarda-chuva" PJEII-26798 - Reestruturação da visualização de Autos Digitais.
Cada história foi desmembrada em diversas sub-tarefas, utilizadas pela equipe do projeto para controlar o progresso da implementação. Por estarem vinculadas às histórias de usuário, essas subtarefas podem ser visualizadas integralmente no Jira.