[Estudo de Caso] Permitindo que usuários configurem o envio de relatórios do Power BI de dentro da aplicação

[Estudo de Caso] Permitindo que usuários configurem o envio de relatórios do Power BI de dentro da aplicação
Photo by Jazmin Quaynor / Unsplash

Olá pessoALL,

Esse talvez será um post maior que o normal, mas a ideia é compartilhar com vocês como construí essa prova de conceito e como ela pode ser útil em diversos cenários dentro do seu sistema.

O Desafio

Bom, primeiro um pouco de contexto, na maioria dos sistemas temos vários relatórios e geralmente uma ou mais maneiras de gerar esses relatórios, no meu context estamos utilizando o Power BI paginated reports, mas podemos utilizar a técnica para qualquer engine de relatórios.

Nos nossos clientes temos a necessidade de gerar esses relatórios e mandar via email para usuários que não querem acessar o sistema só para gerar um relatório e exportar para excel ou pdf.
Imagine o cenário de um gestor ou gerente que quer o relatório de vendas da semana anterior toda segunda de manhã na sua caixa de entrada.

Eu já até escrevi sobre maneiras de exportar dados no passado e o desafio em si, não é dos mais complexos, o próprio power bi fornece uma api para exportação. As coisas ficam um pouco mais complicadas quando desejamos oferecer um mecanismo para os usuários (no caso do exemplo o gestor/gerente) possam configurar quais relatórios, com quais variáveis, eles desejam receber os emails ou configurar outros tipos de ações em cima dos dados.

Recuperando um relatório de vendas dos últimos 7 dias

Planejando a solução

Depois de cogitar fazer a solução do 0, como o primeiro impulso de qualquer desenvolvedor, decidi pesquisar um pouco se já existia algo parecido com o que eu precisava, foi ai que descobri um projeto open source chamado Elsa Workflows, que possui tudo o que eu precisava na parte visual, me restando apenas conectar os pontos.

Elsa Core is a workflows library that enables workflow execution in any .NET Core application. Workflows can be defined using code and using the visual workflow designer.

O código fonte do projeto esta no github:

O projeto tem uma mêcanica bem simples, mas que serve para ilustar o que eu precisava fazer:

  1. Permitir a qualquer usuário criar um workflow de forma visual
  2. Dentro do workflow, chamar a API do PowerBI e recuperar o relatório em formato excel
  3. Enviar esse arquivo por email.

O workflow

Se voce curte mais olhar o código rodando e ir direto ao ponto, voce pode usar a opção de importar um workflow e importar o arquivo json da pasta samples no github.

Aqui irei passar pelos principais pontos do workflow de exemplo:

  1. Definição de variáveis - Os 2 primeiros passos temos a definição de 2 variáveis para serem usadas como paramêtros do relatório
  1. O segundo passo, é chamar a api do Power BI passando os parâmetros desejados, observe que uso o formato Liquid para montar o JSON da nossa chamada HTTP.
  1. Agora com o stream do arquivo, configuramos o envio de e-mail:

Conclusão

Utilizando o projeto ELSA e as APIs do PowerBI podemos agendar o envio de relatório de maneira self-service, mas isso é apenas uma possibilidade de uso, utilizando a api do próprio sistema eu posso por exemplo programar envio de email de lembretes ou de pesquisa para meus usuários ou definir eventos do meu dominio de negócios e programar workflows em cima desses eventos.

Para quem se interessou sobre o ELSA, vou deixar alguns artigos bem completos de possibilidades de uso no sistema: