1. Introdução

O BacenJud é um sistema que interliga a Justiça ao Banco Central e às instituições financeiras, para agilizar a solicitação de informações e o envio de ordens judiciais ao Sistema Financeiro Nacional, via internet.

Em dezembro de 2019, foi firmado Acordo de Cooperação Técnica entre o Conselho Nacional de Justiça – CNJ, o Banco Central e a Procuradoria da Fazenda Nacional – PGFN, visando o desenvolvimento de novo sistema para substituir o BacenJud e aprimorar a forma de o Poder Judiciário transmitir suas ordens às instituições financeiras.

Visando cumprir os comandos constitucionais de razoabilidade duração do processo e eficiência da prestação jurisdicional, bem como reduzir os riscos na tramitação física de documentos contendo informações sigilosas, foi desenvolvido o Sistema de Busca de Ativos do Poder Judiciário – SISBAJUD.

2. Integração

Para que a integração do PJE com o Sisbajud fosse possível, foi criado o serviço bacen. Este serviço é responsável por abstrair toda complexidade de comunicação com a API do Sisbajud, além de realizar processo de desdobramento de maneira automática.

Diagrama de integração
Figure 1. Diagrama de integração

O PJE tem como dependência o projeto api-client. Este projeto contém o Seam component BacenRestClient, o qual possui a lógica necessária para comunicação com o serviço bacen. Por meio desse componente, o PJE tem acesso às seguintes funcionalidades:

  • Protocolar ordem judicial de bloqueio de valores

    String BacenRestClient.protocolaOrdemJudicial(String tokenAcesso, ProcessoTrf processoTrf, List<Executado> executados, Double valorBloqueio, String documentoOperador)
  • Cancelar ordem judicial de bloqueio de valores

    String BacenRestClient.cancelaOrdemJudicial(String tokenAcesso, String protocolo)
  • Recuperar logs

    String BacenRestClient.recuperaLogs(String tokenAcesso, String protocolo)
  • Entregar documentos

    void BacenRestClient.entregaDocumento(String tokenAcesso, String protocolo)
  • Desbloquear valores

    void BacenRestClient.desbloqueiaValores(String tokenAcesso, String protocolo)
  • Realizar desdobramento

    void BacenRestClient.realizaDesdobramento(String tokenAcesso, String protocolo)
O parâmetro tokenAcesso é opcional. Este parâmetro passará a ser obrigatório quando a solução de Single Sign-On (SSO) estiver sendo utilizada por um número razoável de PJEs.
Caso os parâmetros executados e/ou valorBloqueio não forem fornecidos, serão considerados executados todas pessoas que figuram no pólo passivo e o valor do bloqueio será o valor da causa que consta no processo.

Antes de executar qualquer uma dessas funcionalidades, o serviço bacen precisa ser configurado. Essa configuração é específica para cada usuário e inclui:

  • Cadastro de senha de acesso ao CNJ Corporativo.

  • Cadastro de dados para a realização do desdobramento.

  • Cadastro do mapeamento entre as varas do PJE e do Sisbajud.

A tela de configuração está disponível no PJE em Configuração → Serviços → Bacen

Tela de configuração
Figure 2. Tela de configuração

3. Regra de negócio

Uma vez feito o cadastro da configuração e protocolado uma ordem judicial de bloqueio de valores, o serviço irá verificar (após 48hs do protocolamento) se aquela ordem judicial foi respondida. De acordo com as respostas das instituições financeiras associadas aos executados, o serviço irá realizar o desdobramento (desbloqueio ou transferência de valores) e entregar (via MNI) uma certidão ao processo correspondente. Essa certidão pode ser dos seguintes tipos:

  • Resposta negativa: Nenhuma instituição financeira respondeu à solicitação de bloqueio de valores.

  • Desbloqueado: Será realizado o desbloqueio caso o total de valores bloqueados seja inferior aos critérios configurados nos campos Valor mínimo para bloqueio e Porcentagem mínima para bloqueio. Este último parâmetro é calculado sobre o valor de bloqueio.

  • Transferido parcialmente: Caso o valor de bloqueio não tenha sido atingido.

  • Transferido: Caso o valor de bloqueio tenha sido atingido ou ultrapassado. Neste último caso, todo o excesso é desbloqueado.

A lógica de desdobramento considera como valor de bloqueio o maior valor solicitado dentre todos os executados. A transferência de valores para a conta judicial configurada começa no primeiro executado e para até atingir o valor de bloqueio.

4. Endpoints

A documentação dos enpoints pode ser acessada aqui (homologação) ou aqui (produção).

A execução de qualquer endpoint está condicionada ao fornecimento do bearer token. Para recuperá-lo realize uma chamada POST em https://sso.stg.cloud.pje.jus.br/auth/realms/pje/protocol/openid-connect/token (homologação) ou https://sso.prd.cloud.pje.jus.br/auth/realms/pje/protocol/openid-connect/token (produção) com os parâmetros abaixo no body e o content-type = application/x-www-form-urlencoded:

client_id: "sisbajud-api"
client_secret: "3bf9b179-c81f-4280-bf20-e026e49f6a61"
grant_type: "password"
username: "[Usuário - CNJ Corporativo]"
password: "[Senha - CNJ Corporativo]"

O serviço de SSO irá retornar um access_token. Utilize-o para chamar os endpoins passando no cabeçalho da requisição Authorization: "Bearer access_token"

5. Execução

5.1. Docker

Antes de começar

Necessário ter o Docker instalado.

Inicie a aplicação
$ docker container run --rm --name bacen -it -p 8585:8585 registry.cnj.jus.br/pje2/pje2-servicos/bacen:latest

5.2. OpenJDK

Antes de começar

Necessário ter o OpenJDK 1.8 ou superior instalado.

Clone o repositório
$ git@git.cnj.jus.br:pje2/pje2-servicos/bacen.git
Gere o pacote (.jar) do projeto usando maven
$ mvn clean package
Inicie a aplicação
$ java -jar target/bacen.jar

6. Principais tecnologias utilizadas

6.1. Linguagem de programação

Java versão 8

6.2. Framework(s)

SpringBoot 2

6.3. Armazenamento dos dados

Banco relacional PostgreSQL

7. Configuração da aplicação

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

Variável Descrição Valor padrão

SERVICE_PORT

Porta do serviço

8585

DB_DRIVER

Driver do banco de dados

org.h2.Driver

DB_URL

URL do banco de dados

jdbc:h2:mem:bacen;DB_CLOSE_ON_EXIT=FALSE

DB_USER

Usuário do banco de dados

sa

DB_PASSWORD

Senha do usuário do banco de dados

EUREKA_SERVER_DEFAULT_ZONE

URL do service discovery

http://localhost:8761/eureka

EUREKA_CLIENT_ENABLED

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

true

HOST_SISBAJUD

Host da API de serviços do Sisbajud

PASSWORD_CRYPTO_KEY

Chave de 128 bits codificada em Base64 para encriptar a senha do usuário

SISBAJUD_CLIENT_ID

Identificador da aplicação sisbajud-api no serviço de SSO (keycloak)

SISBAJUD_CLIENT_SECRET

Chave da aplicação sisbajud-api no serviço de SSO (keycloak)

SSO_AUTH_SERVER_URL

URL de autenticação do serviço de SSO

http://localhost:9180/auth

SSO_REALM

Domínio da política de segurança configurado no serviço de SSO

pje

Homologação
  • HOST_SISBAJUD = https://sisbajudh.cnj.jus.br

Produção
  • HOST_SISBAJUD = https://sisbajud.cnj.jus.br