Este artigo aborda o desenho de uma solução de geração de Report Definition Language (RDL) face à necessidade de acompanhar o mercado e apoiar as operações que prestam serviços aos clientes Randstad.
Introdução
Atualmente, para cada campanha em clientes Randstad, é necessário que seja aberto um ticket em Jira, podendo demorar 1 ou 2 dias a ser endereçado e resolvido, facto esse que tem impacto na ausência de relatórios quando as campanhas em clientes Randstad entram em produção.
Após uma breve análise, verificou-se que os relatórios utilizados eram apenas para listagens, sendo assim muito semelhantes.
Devido à necessidade de acompanhar o mercado e apoiar as operações que prestam serviços aos clientes Randstad, desenhou-se uma solução de geração de Report Definition Language (RDL) dinâmico com a qual se pretende:
1. Diminuir o tempo de resposta na disponibilização de relatórios operacionais;
2. Dar maior autonomia à equipa responsável pelas campanhas e acompanhamento das operações (NOC) para configuração dos mesmos;
3. Facilidade de criação de relatórios operacionais;
4. Diminuir custos com fte alocados para a elaboração de um relatório à medida.
Descrição da Solução Proposta
De forma a responder às necessidades do cliente, foi proposta uma interface e um engine para a geração de RDL’s dinâmicos - Report Definition Language (RDL) dinâmico, é um relatório que é gerado utilizando as bibliotecas da Microsoft e recorrendo a c# ou visual basic.
Para que a solução seja dinâmica e interativa, houve a necessidade de criação de um front-end que permite ao utilizador final a seleção dos dados que pretende observar no relatório dinâmico. A criação do RDL torna-se assim user-friendly porque permite a rápida seleção de dados e criação do Report.
Recorreu-se a mockups e a um diagrama de sequências, de forma a salvaguardar o envolvimento do cliente ao longo da prova de conceitos.
Mockups
Por se tratar de uma prova de conceitos e a solução não poder ser complexa devido à reduzida experiência dos utilizadores na criação de relatórios, optou-se por desenhar uma interface minimalista.
O desenho inclui 3 etapas de criação, “Data Source Configuration”, com escolha do servidor, datasource e objeto fonte do report (table, stored procedure ou view), “Report information e Report Prompts”, com informação do conteúdo do report e “Preview do Relatório”.
O primeiro ecrã é utilizado para configurar a informação relativamente ao servidor e base de dados.
Figura 1 – Mockup de ecrã para seleção da base de dados
O segundo ecrã é utilizado para configurar a informação face ao relatório, onde são selecionadas as características dos mesmos, nomeadamente as colunas.
Figura 2 – Mockup para configuração do relatório e seleção das colunas
O terceiro ecrã é um preview do relatório.
Figura 3 – Mockup para pré-visualização do relatório customizado
Diagrama de Sequências
De forma a garantir que o fluxo dos ecrãs era devidamente percetível perante o cliente, elaborou-se um diagrama de sequências.
Figura 4 – Diagrama de sequências
Engine da geração de RDL dinâmico
O core deste POC incide sobre o engine da geração de RDL dinâmico. Para tal e como base, foi seguido de forma minuciosa as melhores práticas da Microsoft que se encontram disponíveis no endereço
https://technet.microsoft.com/en-us/library/ms170667(v=sql.105).aspx
A geração do RDL dinâmico divide-se essencialmente nas seguintes partes:
1. Instanciação do objeto XML
Figura 5 – Exemplo de instanciação do objeto
2. Adicionar elementos ao relatório
Figura 6 – Exemplo para adicionar elementos ao relatório
3. Adicionar datasources ao relatório
Figura 7 – Exemplo para adicionar datasources ao relatório
4. Adicionar datasets
Figura 8 – Exemplo para adicionar datasets a um relatório
5. Adicionar as colunas
Figura 9 – Exemplo para adicionar colunas a um relatório
6. Adicionar a tablix
Figura 10 – Exemplo para adicionar uma tablix a um relatório
Figura 11 – Exemplo para adicionar uma tablix a um relatório – parte II
No final de cada iteração, o relatório recém-gerado é guardado e publicado no report server tornando-se assim disponível para os utilizadores.
Figura 12 – Exemplo para guardar o relatório
Versão final do front-end
O front-end desenvolvido em .net core 2.0, teve como base o desenho dos mockups anteriormente descritos.
A simples customização de um relatório, permite ao utilizador, de forma rápida e intuitiva, criar os seus relatórios on-demand.
Ecrã 1 – Selecionar a base de dados
Figura 13 -Ecrã que permite selecionar a base de dados
Ecrã 2 – Configurar o Relatório
Figura 14- Ecrã de configuração do relatório
Ecrã 3 – Selecionar as colunas a serem apresentadas no relatório
Figura 15 – Ecrã que permite a seleção de colunas a apresentar no relatório
Bases de dados
Tabelas utilizadas para a aplicação:
Figura 16 – Diagrama da base de dados
Exemplo de alguns relatórios criados e guardados na base de dados aplicacional:
Figura 17 – Exemplo de três relatórios configurados
Ferramentas/Tecnologias utilizadas
• Base de dados
- Microsoft SQL Server 2016 (SSRS, SSMS)
• C# 7.0
• .Net Core 2.0
Exemplo de report gerado
Os exemplos contêm dados exemplificativos, em virtude dos relatórios conterem informação sigilosa para o cliente.
XML
Figura 18 – Exemplo em XML de um relatório gerado
Tabela SSRS (estes dados são meramente exemplificativos, devido ao acordo de confidencialidade com o cliente)
Figura 19 – Exemplo de um tablix criado
Conclusão
A primeira versão do produto conta com uma base de dados e um backoffice que possibilita a customização dos relatórios, tendo um número limitado de templates.
Apesar da complexidade no desenvolvimento da solução, esta pode acrescentar uma mais valia na criação de relatórios (ssrs ondemand), de forma rápida e intuitiva para o utilizador final.
A implementação da solução apresentada, poderá contribuir para uma diminuição do esforço em 200 horas e, por sua vez, irá diminuir os custos dos projetos.
A segunda versão do produto irá contemplar a customização de novos templates, a edição de relatórios já existentes, a criação de perfis de visualização dos relatórios e comandos de voz.