Fontes de dados

Fontes de dados são objetos que têm o objetivo de centralizar regras e conceitos não triviais existentes nas consultas à base de dados, evitando que essas regras sejam espalhadas, de forma duplicada e muitas vezes de forma incompleta, nos diversos processos e relatórios do sistema.

Em um primeiro momento, podemos não dar tanta importância às questões de reuso e encapsulamento nas consultas, pois, em suas versões iniciais, o modelo de dados normalmente é claro o suficiente para ser consumido de uma forma simples. Nesse cenário ideal, uma expressão SQL pode ser uma abstração suficiente para a compreensão de uma consulta de dados. No entanto, com a evolução do sistema no decorrer dos anos, novos campos e regras podem ser criadas. Consultas podem precisar de revisão para se adequarem às novas regras do domínio de negócio e essa revisão pode ser particularmente complexa, pois clientes podem ter criado customizações considerando uma versão específica e desatualizada do modelo de dados.

Os ideais de reuso e encapsulamento das fontes de dados não são uma novidade e eles também podem ser alcançados por meio de classes JavaScript relacionadas a um domínio de negócio que centralizem a criação e execução das consultas. Esses tipos de classes são comuns no sistema, sendo comumente chamados de objetos de consulta.

A criação de objetos de consulta resolvem a questão da duplicação de código e regras de negócio, no entanto, a sua criação de uma forma específica para cada domínio de negócio, sem a adoção de um padrão, tornam esses objetos amarrados ao domínio de negócio ao qual eles foram criados.

As fontes de dados buscam resolver esse problema, definindo um padrão de construção desses objetos e criando uma API de consumo única que pode ser reutilizada para qualquer fonte de dados criada no sistema. Essa padronização possibilita a construção de ferramentas e APIs genéricas, como o editor de relatórios, exportação automatizada de dados e APIs de integração.

As principais classes da API de fontes de dados são:

  • DataSource: representa a definição da fonte de dados, incluindo a lógica de obtenção dos dados, as colunas e filtros disponíveis.
  • DataSourceQuery: objeto auxiliar que representa uma consulta em uma fonte de dados. Se imaginarmos um DataSource como uma tabela, um DataSourceQuery seria equivalente à expressão SQL de consulta nessa tabela.
  • Visualization: componente do Web Framework que permite visualizar os dados retornados por uma fonte de dados em formatos pré-determinados, normalmente como relatórios do sistema.