Home

TOTVS | Plataformas e tecnologias

Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Deck of Cards
id1
Card
id1
labelPasso 1

 

Abra o BIRT Report Designer selecione o menu File -> Project conforme a figura 1.

 

Figura 1 – Novo projeto.

Card
id1
labelPasso 2

 

Ao abrir a janela New Project, selecione a opção Business Intelligence and Reporting Tools -> Report Project, clique no botão Next e defina o nome colleague_report como nome para o projeto do relatório, selecione a localização do projeto e clique em Finish conforme a figura 2.

 

Figura 2 – Tipo de projeto.

 

Criando o relatório

Deck of Cards
id2
Card
id2
labelPasso 1

 

Após a criação do projeto na área Navigation clique com o botão direito do mouse sobre o projeto colleague_report e selecione New -> Report, conforme a figura 3.

 

Figura 3 – Novo relatório.

Card
id2
labelPasso 2

 

Ao abrir a janela New Report defina report.rptdesign como nome do relatório, clique no botão Next e selecione a opção Blank Report para template do relatório, em seguida clique no botão Finish conforme a figura 4.

 

Figura 4 – Definindo o tipo de relatório.

 

Configurando o acesso aos dados

Deck of Cards
id3

 

Um Data Source é mecanismo que guarda os dados de conexão com a fonte de dados, por exemplo, configurações JDBC, Web Service, entre outros. No caso desse relatório será utilizado o acesso aos dados via linguagem JavaScript.

Card
id3
labelPasso 1

 

Ao criar o novo relatório, selecione a aba Data Explorer, clique com o botão direito do mouse sobre o item Data Source em seguida selecione a opção New Data Source conforme a figura 5.

 

Figura 5 – Novo Data Source.

Card
id3
labelPasso 2

 

Ao abrir a janela New Data Source, selecione a opção Scripted Data Source e define o nome dsColleague como Data Source Name em seguida clique no botão Finish, conforme a figura 6.

 

Figura 6 – Tipo de Data Source.

Card
id3
labelPasso 3

 

Na aba Data Explorer clique com o botão direito do mouse sobre o item Data Sets em seguida clique na opção New Data Set conforme figura 7. Data Set é uma tabela temporária do BIRT no qual os dados são armazenados do Data Source e renderizados no relatório.

 

Figura 7 – Novo Data Set.

Card
id3
labelPasso 4

 

Ao abrir a janela New Data Set define colleagueDataSet como Data Set Name, clique no botão Next em Output Columns clique no botão Add e adicione todas as os registros do DataSet:

 

Column NameData TypeColumn AliasDisplay Name
colleagueIdStringVazioVazio
LoginStringVazioVazio
colleagueNameStringVazioVazio
mailStringVazioVazio
activeStringVazioVazio
adminuserStringVazioVazio

 

Em seguida clique no botão Finish conforme a figura 8.

 

Figura 8 – Colunas do Data Set.

 

Incluindo parâmetros no relatório

Deck of Cards
id4

 

É possível incluir parâmetros no relatório a serem solicitados para o usuário antes da sua renderização, auxiliando no filtro de consulta aos dados gerando um relatório específico.

 

Card
id4
labelPasso 1

 

Selecione a aba Data Explorer, em seguida clique com o botão direito do mouse no item Report Parameters, selecione a opção New Parameter conforme a figura 9.

 

Figura 9 – Parâmentros do Relatório.

Card
id4
labelPasso 2

 

A figura 10 ilustra a janela de inclusão de parâmetros.

 

Figura 10 – Configuração de parâmetros.

 

Ao abrir a janela New Parameter inclua os seguintes parâmetros:

Matrícula

  • Name: Matrículo;
  • promptText: Matrícula do Colaborador ou "*" para mostrar todos;
  • Data type: String;
  • Display type: Text Box;
  • Is Requered: true.
 

Mostrar usuários

  • Name: paramEnable;
  • Prompt text: Mostrar usuários;
  • Data type: String;
  • Display type: List Box;
  • Is Requered: true.

 

Selection Values

ValueDisplay Text
*Todos
trueAtivos
falseInativos


Ordenar por

  • Name: paramSort;
  • Prompt text: Order por;
  • Data type String;
  • Display type: List Box;


Selection Values

ValueDisplay Text
c.colleaguePK.colleagueIdMatrícula
c.colleagueNameNome
c.loginLogin


...

Deck of Cards
id5
Card
id5
labelPasso 1

 

Selecione a aba Script na pagina do relatório e em seguida selecione o evento initialize, em inclua o seguinte código conforme figura 11:

 

Figura 11 – Evento initialize


 

Bloco de código
importPackage(Packages.java.io); 
importPackage(Packages.com.datasul.technology.webdesk.dataset.service); 
 
importPackage(Packages.java.util); 
 
var query = null; 
var resultSet = null; 
 
var rowMap = null; 
var count = 0; 
var sqlJpa = "";

 

O código a cima importa as bibliotecas Java™ e a biblioteca disponibilizada pelo TOTVS | ECM para consulta aos dados do produto via JPA, além de realizar a inicialização das variáveis utilizadas pelo relatório.

Detalhes sobre o código:

  • importPackage: comando responsável pela importação de bibliotecas Java™;
  • Package.java.util: biblioteca responsável pelas Classes utils do Java™;
  • Packages.com.datasul.technology.webdesk.dataset.service: biblioteca disponibilizada pelo TOTVS | ECM para consulta ao banco de dados do produto via consula JPA;
Card
id5
labelPasso 2

 

Selecione a aba Data Explorer, expanda o item Data Sets e clique no colleagueDataSet em seguida clique na aba Script então selecione o evento beforeOpen conforme a figura 12.

 

Figura 12 – Evento onBeforeOpen.

 

Em seguida, inclua o seguinte código:

Bloco de código
try { 
 
query = new QueryDelegate(); 
 
sqlJpa = "SELECT c from Colleague c"; 
 
sqlJpa = sqlJpa + " WHERE c.colleaguePK.companyId = ${WKCompany}"; 
 
if(params["Matricula"].value != null) { 
 
if (params["Matricula"].value != "*") { 
sqlJpa = sqlJpa + 
" AND c.colleaguePK.colleagueId = '" + 
params["Matricula"].value + "'";
if(params["paramEnable"].value != null) 
{ 
if (params["paramEnable"].value != "*") { sqlJpa = sqlJpa + " AND c.active = " + params["paramEnable"].value; } } } else { if(params["paramEnable"].value != null) { if (params["paramEnable"].value != "*") { sqlJpa = sqlJpa + " AND c.active = " + params["paramEnable"].value; } } } } sqlJpa = sqlJpa + " ORDER BY " + params["paramSort"].value; resultSet = query.getResultQuery(sqlJpa); } catch (e) { } finally { }

 

O código acima monta a consulta do relatório através da consulta JPA e inclui os filtros da solicitação de acordo com os parâmetros definidos pelo usuário.
Detalhes sobre o código:

  • query: objeto da biblioteca TOTVS | ECM sendo responsável pela consulta dos dados no produto por meio de instrução JPA;
  • sqlJpa: variável responsável pela geração do script de consulta JPA, criado a partir dos parâmetros definidos pelo usuário;
  • ${WKCompany}: TAG disponibilizada pelo TOTVS | ECM, retorna o código da empresa que o usuário está autenticado;
  • params["Matricula"]: parâmetro de relatório, retorna o código da matricula definido pelo usuário;
  • params["paramEnable "]: parâmetro de relatório, retorna o tipo de usuário;
  • params["paramSort "]: parâmetro de relatório, retorna o modo de ordenação;

 

Card
id5
labelPasso 3

 

Para incluir o resultado da consulta no Data Set e formatar os dados do relatório, selecione o evento fetch na área de Script, conforme figura 13.

 

Figura 13 – Evento fetch.

 

Em seguida inclua o seguinte código:

Bloco de código
if (resultSet != null) { if(count < resultSet.size()){ var rowMap = resultSet.get(count); row["colleagueId"] = rowMap.get("colleagueId"); row["login"] = rowMap.get("login"); row["colleagueName"] = rowMap.get("colleagueName"); row["mail"] = rowMap.get("mail"); var active = rowMap.get("active"); if (active == "true") {
row["active"] = "Sim"; } else { row["active"] = "Não"; } var adminUser = rowMap.get("adminUser"); if (adminUser == "true") { row["adminUser"] = "Sim"; } else { row["adminUser"] = "Não"; } count++; return true; } } return false;

 

O código acima verifica se houve resultado na consulta JPA, caso houver ele incluí os dados no Data Set e formata os campos usuário ativo e administrador.
Detalhes sobre o código:

  • resultSet: objeto que contém o retorno da consulta JPA;
  • rowMap: variável do tipo HashMap que possibilita a busca dos campos do retorno da consulta;
  • row: variável do BIRT que armazena os registros do Data Set;

...

Deck of Cards
id6

 

Uma forma alternativa de obtenção de dados para criação de relatórios é a utilização de JDBC. É necessário criar um Data Source que se conecte com o banco de dados, nele serão armazenados os dados para conexão, via JDBC, ao banco de dados.

 

Card
id6
labelPasso 1

 

Selecione a aba Data Explorer, clique com o botão direito do mouse sobre o item Data Source em seguida selecione a opção New Data Source conforme a figura 14.

 

Figura 14 – Novo Data Source

Card
id6
labelPasso 2

 

Ao abrir a janela New Data Source, selecione a opção JDBC DataSource e define o nome JDBC-DataSource como Data Source Name em seguida clique no botão Next, conforme a figura 15.

 

Figura 15 – Tipo Data Source

Card
id6
labelPasso 3

 

Na próxima janela a conexão com o banco de dados deve ser configurada. No campo Driver Class selecione o driver de conexão com o banco de dados, neste caso, a conexão será feita com o banco MySQL®. Se o driver necessário não estiver listado, basta adiciona-lo clicando em Managed Drivers...
Informe também os valores para Database URL, User Name e Password de acordo com o banco de dados escolhido, conforme a figura 16.

 

Figura 16 – Configurando conexão com banco de dados.

Card
id6
labelPasso 4

 

Na aba Data Explorer clique com o botão direito do mouse sobre o item Data Sets em seguida clique na opção New Data Set conforme figura 17.

 

Figura 17 – Criando Novo Data Set.

Card
id6
labelPasso 5

 

Selecione o Data Source criado (JDBC-DataSource), no campo Data Set Type selecione SQL Select Query, informe um nome para o Data Set e clique em next, conforme a figura 18.

 

Figura 18 – Configurando Data Set

Card
id6
labelPasso 6

 

Na próxima tela informe a SQL que busca os dados no banco de dados, neste exemplo, serão buscados os colaboradores da empresa autenticada no TOTVS | ECM, conforme a figura 19.

 

Figura 19 – Criação da Query SQL

 

Bloco de código
SELECT colaborador.CD_MATRICULA,
       colaborador.COD_EMPRESA,
       colaborador.NM_COLABORADOR,
       colaborador.E_MAIL
FROM colaborador
WHERE colaborador.COD_EMPRESA = ${WKCompany}

A Query acima busca no banco de dados todos os colaboradores da empresa do usuário autenticado no TOTVS | ECM, este código é obtido através da TAG ${WKCompany}.

 

Nota
titleObservação

Poderá ocorrer um erro quando concluir a criação do Data Set pois a TAG ${WKCompany} não existe no contexto do BIRT. A figura 20 apresenta o erro devido à utilização da TAG, este é um erro de sintaxe no SQL e indica que ${WKCompany} não é um comando SQL. Porém quando o relatório for executado no ECM, ela retornará o código da empresa normalmente, com isso a TAG será substituída pelo código da empresa do usuário autenticado no ECM, corrigindo o erro de sintaxe.

Figura 20 – Erro do Birt pelo uso da TAG ${WKCompany}

Nota
titleAtenção:

A criação de relatório no Birt utilizando conexão JDBC exige atenção com relação à segurança da publicação do relatório no ECM, uma vez que o arquivo .rptdesign (XML do relatório Birt) deixa exposto os parâmetros de conexão com o banco de dados, porém o campo senha fica ofuscado com base64. Por este motivo e pela facilidade de busca das informações do TOTVS | ECM, sempre recomendamos a criação de relatórios com fontes de dados via Dataset do ECM ou query JPA.
Se a criação de relatórios utilizando JDBC for necessária, recomendamos que ao publicar um relatório no ECM as configurações de permissão sejam definidas apenas para leitura. Usuários que possuem permissão de manutenção podem fazer o download dos anexos e com isso terão acesso aos dados de conexão com o banco de dados.

...

Deck of Cards
id7
Card
id7
labelPasso 1

 

É necessária a inclusão dos componentes de renderização do relatório. Clique na aba Layout para visualizar a página do relatório que está em branco e em seguida selecione a aba Palette conforme a figura 21.

 

Figura 21 – Relatório em branco.
 
Na aba Pallets é possível incluir vários componentes de visualização e renderização de dados entre eles destacam-se:

  • Label: Texto curto e estático;
  • Text: Texto longo é possível formatá-lo com TAG’s HTML;
  • Dynamic Text: Texto dinâmico provido do Data Set;
  • Image: Inclusão de imagens;
  • Grid: Formatador de dados em Grid;
  • Table: Tabela de dados;
  • Chart: Gráficos de pizza, linha, tubo, etc.

É possível incluir imagens da internet, incluir imagens de arquivo ou ainda embutir a imagem no XML do relatório. Neste exemplo será usada uma imagem em anexo para posteriormente mostrar como publicar relatórios com anexo.

Card
id7
labelPasso 2

 

Arraste um componente Image no relatório, ao abrir a janela Edit Image Item, selecione a opção Image file in shared resources, selecione o arquivo da imagem na opção Enter resource file e em seguida clique no botão Insert conforme figura 22.

 

Figura 22 – Componente Imagem.

 

Arraste um componente Text no relatório, ao abrir a janela Edit Text Item selecione a opção HTML e na área de texto inclua a seguinte informação formatada em HTML:

Bloco de código
<H1><B>TOTVS S/A</B></H1> Av. Santos Dumont, 831 – Bom Retiro <br> CEP 89.222-900 – Joinville – SC – Brasil <br>Telefone: +55 (47) 2101-7000 <br> Fax: +55 (47) 2101-7070 </br>
Card
id7
labelPasso 3

 

Em seguida clique no botão OK conforme figura 23.

 

Figura 23 – Componente Text.

Card
id7
labelPasso 4

 

Arraste um componente Label no relatório, clique duas vezes sobre o componente incluído e digite Relatório de Colaboradore na aba Properties Editor -> Properties clique em General e defina a formatação da label, conforme figura 24.

 

Figura 24 – Título do relatório.

Card
id7
labelPasso 5

 

Arraste um componente Table, ao abrir a janela Insert Table defina 6 colunas e 1 detalhe e clique no botão OK conforme figura 25.

 

Figura 25 – Configuração da Tabela.

Na tabela adicionada ao relatório inclua um componente Label para cada coluna da linha Header Row defina os seguintes valores:

  • Matrícula;
  • Nome;
  • Login;
  • E-mail;
  • Ativo;
  • Administrador.
Card
id7
labelPasso 6

 

Formate as labels incluídas definindo cor da fonte e cor de fundo conforme figura 26.

 

Figura 26 – Título das Colunas.

Renderizando dados do DataSet

Deck of Cards
id8

 

Selecione a aba Data Explorer e expanda o colleagueDataSet criado anteriormente e em seguida arraste cada item do Data Set para a coluna Detail Row da tabela criada anteriormente conforme figura 27.

 

Figura 27 – Data Set.

 

Publicando Relatórios

 

Publicação

...