Desenvolvendo aplicações cloud-native com Java — parte 3

Do que é composto o TJF?

Diego Nunes da Silveira
TOTVS Developers
3 min readFeb 20, 2020

--

Photo by La-Rel Easter on Unsplash

Dando continuidade aos artigos sobre o TOTVS Java Framework, abordaremos seus principais componentes e as funcionalidades presentes na versão atual do framework.

Componentes e funcionalidades

Cada parte do TOTVS Java Framework procura endereçar um ou mais desafios que motivaram o seu surgimento. Os 12 fatores de uma aplicação cloud-native, bem como a arquitetura hexagonal, ajudam a nortear os esforços de desenvolvimento do TJF.

A seguir vamos apresentar alguns dos componentes lógicos do TJF, considerando a última versão disponível no momento.

API

Fornece as definições e implementações contratuais dos objetos de transferências de dados (DTO) e dos estereótipos de erros, além de facilitadores para implementação de repositórios JPA (JpaRepository). Tem como premissa o Guia de APIs TOTVS (versões 1 e 2).

Possui implementações que disponibilizam de maneira prática o acesso as funcionalidades de Filtro Simples e Filtro Complexo, além de paginação, seleção de campos (fields) e ordenação.

I18N

Fornece facilitadores para simplificar o desenvolvimento e estruturar recursos comuns relacionados à internacionalização, incluindo um MessageSource, para que seja possível informar seus arquivos de tradução tanto de forma unificada (um único arquivo), quanto separados por categoria (mensagens gerais, exceções e validações). A implementação permite definir um bundle para cada idioma do sistema.

Messaging

API que oferece suporte a mensagens no modelo Publish/Subscribe utilizando como base o Spring Cloud Stream. Além disso, faz tratamento de exceções, publicando-as em uma fila parametrizável e tem suporte ao recurso de multi-tenancy.

Process

Oferece suporte a orquestração e coreografia de processos. Além do componente, há um serviço, que atua como um mecanismo de orquestração de transações assíncronas e distribuídas em um delimitado contexto de negócio, via mensageria. Ele utiliza o Flowable, um mecanismo de execução de processos, de código aberto via licenciamento Apache 2.0, que suporta os padrões BPMN, DMN e CMMN.

Repository Aggregate

Suporte ao conceito de repositório de agregados do DDD. Trabalha com o modelo NoSQL e atualmente é homologado para o PostgreSQL (JsonB) e MySQL (Json). O funcionamento é simples e entrega praticamente todas as funcionalidades do componente API, incluindo o suporte ao multi-tenancy.

Security

Implementação de segurança em APIs (autenticação e autorização) baseada em tokens JWT. Implementa os conceitos de Roles, ou seja, a lista de permissões concedida para o usuário e Resources, que trata das features que estão disponíveis na aplicação, necessitando assim, receber no token JWT um usuário que tenha permissão para aquela feature.

SGDP

O Sistema de Gestão de Dados Pessoais permite tornar a aplicação aderente aos requisitos da LGPD, no que diz respeito a coleta, auditoria e consulta de dados pessoais e sensíveis. Para a identificação dos dados pessoais, são utilizadas anotações para definir a sensibilidade, tipo, propósito e descrição, além de permitir anonimizar as informações por meio de mascaramento caso haja o interesse.

Relacionado à auditoria, é disponibilizado EntityListener para armazenar informações sobre as ações de persistência sobre uma entidade. A coleta de dados, é realizada com o intuito de permitir o processamento das informações em serviços especializados.

Tenant

Suporte a multi-tenancy em banco de dados, tanto no modelo por schema quanto no modelo discriminator column. No modelo por schema, é criado um schema no banco para cada tenant disponível; já no modelo discriminator, é criada uma coluna que serve como identificação do tenant nas tabelas.

E mais…

Além disso, existem componentes que auxiliam na validação de informações antes de serem enviadas para a camada de persistência (Bean Validators), suporte a Money & Currency API e facilitadores para simplificar o desenvolvimento.

Finalizando

Neste artigo apresentamos brevemente os componentes e funcionalidades do TJF. No Github oficial da Totvs, temos exemplos das funcionalidades descritas no artigo.

No próximo artigo apresentaremos os clientes do TOTVS Java Framework, assim como as suas principais demandas e como estão sendo beneficiados pelo projeto.

Até o próximo artigo!

--

--