Árvore de páginas

Versões comparadas

Chave

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

Índice

Índice
outlinetrue
stylenone
exclude.*ndice
stylenone


Objetivo

O objetivo deste guia é descrever o desenvolvimento, publicação e visualização de relatórios no TOTVS Fluig , para Plataforma. Para facilitar a compreensão será detalhado um exemplo de relatório de usuários.

 

Ambiente de Desenvolvimento

Para o desenvolvimento de relatórios é necessário possuir o Java™ JDK/JRE superior a 1.6. Endereço para download: http://java.sun.com/javase/downloads/index.jsp.

Introdução

O TOTVS Fluig Plataforma utiliza o BIRT - Business Intelligence and Reporting Tools - O Fluig utiliza o BIRT como motor de execução de relatórios, por esse motivo para o desenvolvimento de relatórios deve-se utilizar o padrão e a metodologia do BIRT.

Recomenda-se o uso do BIRT Report Designer para o desenvolvimento de relatórios para o Fluig. O BIRT pode ser integrado ao Studio ou Eclipse (já instalados para utilização do Fluig Studio, conforme Guia de Instalação Fluig Studio), basta instalar o plugin do BIRT. Para isso é necessário realizar acessar a opção Ajuda -> Instalar Novo Software e seguir os procedimentos a seguir: 

  1. Work with: Selecionar Indigo.
  2. Busca: Após listar as opções do BIRT, digitar Birt no campo de busca.
  3. Marcar a caixa de seleção de Business Intelligence, Reporting and Charting.
  4. Em seguida, acionar Avançar.

Image Removed

O BIRT Report Designer conta com várias funcionalidades que auxiliam no desenvolvimento de relatórios. Entre elas destacam-se: ajuste de layout, configuração de acesso a dados e formatação do relatório.

 

Segurança Ambiente SaaS

Em caso de execução do Fluig em ambiente SaaS, não é recomendado o uso de relatórios, pois é possível criar relatórios que retornem informações de outras empresas via consulta JPQL ou Dataset. Para garantir a não execução, é necessário definir o valor true para a variável SaaS localizada em: %JBOSS_HOME%\jboss-as-7.2.0.Final\standalone\configuration\standalone.xml. Ex:

Bloco de código
<simple name="java:global/webdesk/SaaS" value="true"/>

 

Conexão direta com o banco de dados

É possível publicar relatórios que se comunicam diretamente com o banco de dados.

Utilize em seu relatório as configurações abaixo atentando para os valores das propriedades 'odaDriveClass' e 'odaURL'.

 

Para fazer conexão direta com banco de dados SQLServer é preciso utilizar o seguinte padrão:

Bloco de código
languagehtml/xml
titleSQLServer
<property name="odaDriverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> 
<property name="odaURL">jdbc:sqlserver://IP:1433;databaseName=DATABASE</property>

 

Para fazer conexão direta com banco de dados MySQL é preciso utilizar o seguinte padrão:

Bloco de código
languagehtml/xml
titleMySQL
<property name="odaDriverClass">com.mysql.jdbc.Driver</property> 
<property name="odaURL">jdbc:mysql://IP:3306/databaseName=DATABASE</property>

 

Desenvolvendo um relatório de Usuários

Através do BIRT Report Designer é possível criar vários relatórios para o Fluig, acessar dados do banco de dados do produto via consulta JPA, JDBC. É possível acessar os dados de outros produtos por conexão JDBC, Web Service ou arquivos XML.

Para facilitar a compreensão a respeito do desenvolvimento de relatórios para o Fluig, será demonstrado um exemplo de criação de relatórios. A seguir os passos necessários para a criação do relatório de usuários, sendo este com dados providos do Fluig através da consulta via dataset. O fonte do exemplo citado pode ser baixado a partir do seguinte link:

Colleague Report.zip

Criando um novo projeto e um novo relatório

Abra a ferramenta na qual instalou o plugin do BIRT Report Designer para acompanhar o passo a passo, no exemplo iremos utilizar o Fluig Studio.

  • No projeto Fluig previamente criado, clique com o botão direito do mouse na pasta reports, e em seguida em Novo -> Relatório Fluig.
  • Em seguida basta informar o Nome do Relatório e clicar em Concluir.

Image Removed

Figura 1 - Criação de relatório no projeto Fluig.

 

Configurando o acesso aos dados

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.

Acompanhe os passos a seguir:

...

effectDuration0.5
idsamples
historyfalse
effectTypefade

O BIRT é uma plataforma open source que facilita a modelagem de relatórios dentro do Fluig.

A partir da plataforma, é possível criar relatórios com:

  • Listagem
  • Agrupamento
  • Cálculos
  • Cartas e Documentos
  • Gráficos


Exemplos de relatórios desenvolvidos

Informações

Você pode fazer o download de exemplos de relatórios desenvolvidos para a plataforma no Repositório Git.

Mais detalhes na página Modelos de relatório.


Ambiente de desenvolvimento

Para o desenvolvimento de relatórios, é necessário instalar:

  • Java™ JDK/JRE - versão superior a 1.6. Endereço para download: http://java.sun.com/javase/downloads/index.jsp.
  • BIRT - Caso a plataforma esteja na atualização Lake (1.7.0) ou superior, a versão 4.8 do BIRT é compatível. Nas atualizações anteriores, utilize a versão 2.6.2 do BIRT.

Recomenda-se o uso do BIRT Report Designer para o desenvolvimento de relatórios. O BIRT pode ser integrado ao Studio ou Eclipse (já instalados para utilização do Fluig Studio, conforme Guia de instalação Fluig Studio), basta instalar o plugin do BIRT.

O BIRT Report Designer conta com várias funcionalidades que auxiliam no desenvolvimento de relatórios. Entre elas destacam-se: ajuste de layout, configuração de acesso a dados e formatação do relatório.

Como instalar o plugin

Cada versão do Eclipse possui um repositório, e com ele uma versão homologada do BIRT. Confira abaixo os passos necessários para instalar o plugin do BIRT:

Deck of Cards
historyfalse
idVersao
Card
labelA partir da atualização 1.7 (Lake)
Nota

Plugin compatível até a versão 2019-03 do Eclipse. Caso não possua uma versão do Eclipse (se não estiver usando o TDS), é necessário baixar a versão igual ou inferior a 2019-03.

01. No Eclipse, acessar a opção Help → Install New Software.

02. Acionar o botão Add (localizado ao lado do campo Work with) e na tela apresentada preencher: Veja a imagem.Image Added Veja a imagem 

  • Name: birt
  • Location: http://download.eclipse.org/releases/2019-09/201909181001.

03. Após listar as opções do BIRT, marcar a caixa de seleção de Business Intelligence, Reporting and Charting.

04. Em seguida, acionar Next até concluir a instalação.

Image Added

Card
label1.6.5 ou anteriores

01. No Eclipse, acessar a opção Ajuda → Instalar Novo Software.

02. No campo Work with: Selecionar Indigo.

03. Após listar as opções do BIRT, digitar Birt no campo de busca.

04. Marcar a caixa de seleção de Business Intelligence, Reporting and Charting.

05. Em seguida, acionar Avançar até concluir a instalação.

Image Added


Conexão direta com o banco de dados

É possível publicar relatórios que se comunicam diretamente com o banco de dados.

Utilize em seu relatório as configurações abaixo atentando para os valores das propriedades 'odaDriveClass' e 'odaURL'.


Para fazer conexão direta com banco de dados SQLServer é preciso utilizar o seguinte padrão:

Bloco de código
languagehtml/xml
titleSQLServer
<property name="odaDriverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> 
<property name="odaURL">jdbc:sqlserver://IP:1433;databaseName=DATABASE</property>


Para fazer conexão direta com banco de dados MySQL é preciso utilizar o seguinte padrão:

Bloco de código
languagehtml/xml
titleMySQL
<property name="odaDriverClass">com.mysql.jdbc.Driver</property> 
<property name="odaURL">jdbc:mysql://IP:3306/databaseName=DATABASE</property>


Para fazer conexão direta com banco de dados Oracle é preciso utilizar o seguinte padrão:

Bloco de código
titleOracle
<property name="odaDriverClass">oracle.jdbc.OracleDriver</property>
<property name="odaURL">jdbc:oracle:thin:@IP:1521:databaseName=DATABASE</property>


Desenvolvendo um relatório de Usuários

Painel
titleoculto

Esse passo a passo está duplicado no artigo https://centraldeatendimento.fluig.com/hc/pt-br/articles/360034289633 (Como desenvolver relatórios)

Caso tenha alguma alteração, lembrar de revisar esse artigo!

Através do BIRT Report Designer é possível criar vários relatórios para o TOTVS Fluig Plataforma, acessar dados do banco de dados do produto via consulta JPA, JDBC. É possível acessar os dados de outros produtos por conexão JDBC, Web Service ou arquivos XML.

Para facilitar a compreensão a respeito do desenvolvimento de relatórios, será demonstrado um exemplo de criação de relatórios. A seguir, os passos necessários para a criação do relatório de usuários, sendo este com dados providos da plataforma através da consulta via dataset. O fonte do exemplo citado pode ser baixado clicando aqui.

Criando um novo projeto e um novo relatório

Abra a ferramenta na qual instalou o plugin do BIRT Report Designer para acompanhar o passo a passo, no exemplo iremos utilizar o Fluig Studio.

  • No projeto fluig previamente criado, clique com o botão direito do mouse na pasta reports, e em seguida em Novo → Relatório fluig.
  • Em seguida basta informar o Nome do Relatório e clicar em Concluir.

Image Added

Figura 1 - Criação de relatório no projeto fluig.


Configurando o acesso aos dados

Um Data Source é o 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.

Acompanhe os passos a seguir:

Deck of Cards
effectDuration0.5
historyfalse
idsamples
effectTypefade
Card
defaulttrue
id1
labelPasso1


  • Ao criar o novo relatório, selecione a perspectiva Report Design e em seguida 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

Image Added

Figura 2 - Novo Data Source.

Card
defaulttrue
id1
labelPasso1

 

  • Ao criar o novo relatório, selecione a perspectiva Report Design e em seguida 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

Image Removed

Figura 5 - Novo Data Source.

 

...

id2
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 Concluir.

Image Removed

Figura 6 - Tipo de Data Source.

...

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.

Image Removed

Figura 7 - Novo Data Set.

Card
id4
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. Em seguida clique no botão Concluir.

 

Column Name

Data Type

Column Alias

Display Name

colleagueId

String

Vazio

Vazio

Login

String

Vazio

Vazio

colleagueName

String

Vazio

Vazio

mail

String

Vazio

Vazio

active

String

Vazio

Vazio

adminuser

String

Vazio

Vazio

 

Image Removed

Figura 8 - Colunas do Data Set.

 

Incluindo parâmetros no Relatório

É 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. Siga os passos a seguir:

Deck of Cards
effectDuration0.5
idsamples
historyfalse
effectTypefade
Card
defaulttrue
id1
labelPasso1

 

  • 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. 

Image Removed

Figura 9 - Parâmetros do Relatório.

 


 

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

Image Removed

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

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

 

Matrícula

Card
id2
labelPasso 2
CampoValor
NameMatricula
Prompt textMatrícula do Usuário ou "*" para mostrar todos
Data typeString
Display typeText Box
Is Requiredtrue

 

Mostra Usuários

CampoValor
NameparamEnable
Prompt textMostrar usuários
Data typeString
Display typeList Box
Is Requiredtrue

Selection Values

ValueDisplay Text
*Todos
trueAtivos
falseInativos

 

Ordenar Por

CampoValor
NameparamSort
Prompt textOrdenar por
Data typeString
Display typeList Box

Selection Values

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

 

TAG's

O Fluig disponibiliza TAG’s de substituição que auxiliam no desenvolvimento e na segurança da geração das informações do relatório, são elas:

• ${WKCompany}: substitui a variável pelo código da empresa autenticada no Fluig.
• ${WKUser}: substitui a variável pelo código do usuário autenticado no Fluig.

As TAG’s são úteis em casos de informações que só devem ser geradas a respeito da empresa em que o usuário está autenticado, ou em relatórios que mostrem somente informações a respeito do usuário autenticado no Fluig.

 

Populando o Data Set

No exemplo apresentado neste documento será populado o relatório através de dados providos de consultas JPA acessando o banco do Fluig, porém é possível utilizar outros recursos para popular o Data Set: XML, Web Service e JDBC.

O BIRT renderiza o relatório através da execução de seus eventos, são muitos os eventos disponibilizados pelo BIRT, nesse exemplo serão utilizados:

  • initialize: primeiro evento disparado pelo BIRT, é recomendado utilizar esse evento para importação de bibliotecas e inicialização de variáveis;
  • beforeOpen: evento disparado antes do BIRT abrir a conexão com a fonte de dados (Data Source);
  • fetch: evento disparado pelo BIRT depois da busca de cada registro no Data Set e antes de aplicar os filtros e campos calculados.

Através dos eventos é possível desenvolver a lógica de consulta e geração de dados através da linguagem de programação JavaScript , além disso é possível fazer uso de vários recursos e bibliotecas da linguagem Java™.

 


  • 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 Concluir.

Image Added

Figura 3 - 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 4. Data Set é uma tabela temporária do BIRT no qual os dados são armazenados do Data Source e renderizados no relatório.

Image Added

Figura 4 - Novo Data Set.


Card
id4
labelPasso 4


  • Ao abrir a janela New Data Set defina colleagueDataSet como Data Set Name, clique no botão Next em Output Columns, clique no botão Add e adicione todas os registros do Data Set. Em seguida clique no botão Concluir.

Image Added

Figura 5 - Colunas do Data Set.


Column Name

Data Type

Column Alias

Display Name

colleagueId

String

Vazio

Vazio

Login

String

Vazio

Vazio

colleagueName

String

Vazio

Vazio

mail

String

Vazio

Vazio

active

String

Vazio

Vazio

adminuser

String

Vazio

Vazio


Incluindo parâmetros no Relatório

É 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. Siga os passos a seguir:

Deck of Cards
effectDuration0.5
historyfalse
idsamples
effectTypefade
Card
defaulttrue
id1
labelPasso1


  • 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. 

Image Added

Figura 6 - Parâmetros do Relatório.


Card
id2
labelPasso 2


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

Image Added

Figura 7 - Configuração de parâmetros.


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


Matrícula

CampoValor
NameMatricula
Prompt textMatrícula do Usuário ou "*" para mostrar todos
Data typeString
Display typeText Box
Is Requiredtrue


Mostra Usuários

CampoValor
NameparamEnable
Prompt textMostrar usuários
Data typeString
Display typeList Box
Is Requiredtrue

Selection Values

ValueDisplay Text
*Todos
trueAtivos
falseInativos


Ordenar Por

CampoValor
NameparamSort
Prompt textOrdenar por
Data typeString
Display typeList Box

Selection Values

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


TAG's

Disponibilizamos TAG’s de substituição que auxiliam no desenvolvimento e na segurança da geração das informações do relatório, são elas:

${WKCompany}: substitui a variável pelo código da empresa autenticada na plataforma TOTVS Fluig.
${WKUser}: substitui a variável pelo código do usuário autenticado na plataforma TOTVS Fluig.

As TAG’s são úteis em casos de informações que só devem ser geradas a respeito da empresa em que o usuário está autenticado, ou em relatórios que mostrem somente informações a respeito do usuário autenticado.

Como utilizar as TAG's

A tag utilizada deve estar entre aspas duplas, para que ocorra corretamente a substituição da tag pelo respectivo valor:

Bloco de código
languagejs
themeEclipse
titleExemplo - Uso de TAG's
	var c1 = factory.createConstraint("colleagueGroupPK.colleagueId", "${WKUser}", "${WKUser}", ConstraintType.MUST);
	var c2 = factory.createConstraint("colleagueGroupPK.companyId", "${WKCompany}", "${WKCompany}", ConstraintType.MUST);


Populando o Data Set

No exemplo apresentado neste documento, será populado o relatório através de dados providos de consultas JPA acessando o banco de dados, porém é possível utilizar outros recursos para popular o Data Set: XML, Web Service e JDBC.

O BIRT renderiza o relatório através da execução de seus eventos, são muitos os eventos disponibilizados pelo BIRT, nesse exemplo serão utilizados:

  • initialize: primeiro evento disparado pelo BIRT, é recomendado utilizar esse evento para importação de bibliotecas e inicialização de variáveis;
  • beforeOpen: evento disparado antes do BIRT abrir a conexão com a fonte de dados (Data Source);
  • fetch: evento disparado pelo BIRT depois da busca de cada registro no Data Set e antes de aplicar os filtros e campos calculados.

Através dos eventos é possível desenvolver a lógica de consulta e geração de dados através da linguagem de programação JavaScript , além disso é possível fazer uso de vários recursos e bibliotecas da linguagem Java™.


Deck of Cards
effectDuration0.5
historyfalse
idsamples
effectTypefade
Card
defaulttrue
id1
labelInitialize


  • Selecione a aba Script na pagina do relatório e em seguida selecione o evento initialize, inclua o seguinte código conforme figura 8:
Bloco de código
languagejavascript
importPackage(Packages.com.datasul.technology.webdesk.dataset.service);
importPackage(Packages.com.datasul.technology.webdesk.dataset);
importPackage(Packages.com.datasul.technology.webdesk.search.controller);
importPackage(Packages.java.util);
var count = 0;
var dataset = null;

Image Added

Figura 8 - Evento initialize.


O código a cima importa as bibliotecas Java™ e a biblioteca disponibilizada pelo fluig para consulta aos dados do produto, 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 fluig para consulta ao banco de dados do produto.


Card
id2
labelBeforeOpen


  • 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 e inclua o seguinte código conforme a figura 9.
Bloco de código
languagejavascript
try{
	var factory = DatasetFactory.getInstance(${WKCompany});
	var constraints = new Array();	
	var sortingFields = new Array();
	var i = 0;		
	 
	//Filtra somente pela matricula do colaborador informado
	if(params["Matricula
Deck of Cards
effectDuration0.5
idsamples
historyfalse
effectTypefade

 

  • Selecione a aba Script na pagina do relatório e em seguida selecione o evento initialize, inclua o seguinte código conforme figura 11:
Card
defaulttrue
id1
labelInitialize
Bloco de código
languagejavascript
importPackage(Packages.com.datasul.technology.webdesk.dataset.service);
importPackage(Packages.com.datasul.technology.webdesk.dataset);
importPackage(Packages.com.datasul.technology.webdesk.search.controller);
importPackage(Packages.java.util);
var count = 0;
var dataset = null;

Image Removed

Figura 11 - Evento initialize.

 

O código a cima importa as bibliotecas Java™ e a biblioteca disponibilizada pelo Fluig para consulta aos dados do produto, 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 Fluig para consulta ao banco de dados do produto.
    Card
    id2
    labelBeforeOpen

     

    • 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 e inclua o seguinte código conforme a figura 12.
    Bloco de código
    languagejavascript
    try{
    	var factory = DatasetFactory.getInstance(${WKCompany});
    	var constraints = new Array();	
    	var sortingFields = new Array();
    	var i = 0;		
    	 
    	//Filtra somente pela matricula do colaborador informado
    	if(params["Matricula"].value != null &amp;&amp; params["Matricula"].value != "*") {		
    		constraints[i] = factory.createConstraint("colleaguePK.colleagueId", params["Matricula"].value, params["Matricula"].value, ConstraintType.MUST);
    		i++;
    	}
    	
    	//Filtra ativos caso selecionado
    	if(params["paramEnable"].value != null &amp;&amp; params["paramEnable"].value != "*"){
    		constraints[i] = factory.createConstraint("active", params["paramEnable"].value, params["paramEnable"].value, ConstraintType.MUST);
    		i++;
    	}
    	
    	//Ordena conforme seleção
    	if(params["paramSort"].value != null &amp;&amp; params["paramSortMatricula"].value != "*") {		
    		sortingFieldsconstraints[0i] = factory.createConstraint("colleaguePK.colleagueId", params["Matricula"].value, params["paramSortMatricula"].value, ConstraintType.MUST);
    		i++;
    	}	
    	
    	//DatasetFiltra ativos caso selecionado
    	dataset = factory.getDataset("colleague", null, constraints, sortingFields);
    	
    }catch (e) {
    }finally {
    }
    

    Image Removed

    Figura 12 - Evento BeforeOpen.

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

    Detalhes sobre o código:

  • ${WKCompany}: TAG disponibilizada pelo Fluig, 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;
    if(params["paramEnable"].value != null && params["paramEnable"].value != "*"){
    		constraints[i] = factory.createConstraint("active", params["paramEnable"].value, params["paramEnable"].value, ConstraintType.MUST);
    		i++;
    	}
    	
    	//Ordena conforme seleção
    	if(params["paramSort"].value != null && params["paramSort"].value != "*"){
    		sortingFields[0] = params["paramSort"].value;
    	}	
    	
    	//Dataset
    	dataset = factory.getDataset("colleague", null, constraints, sortingFields);
    	
    }catch (e) {
    }finally {
    }
    

    Image Added

    Figura 9 - Evento BeforeOpen.


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

    Detalhes sobre o código:

    • ${WKCompany}: TAG disponibilizada pelo fluig, 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
    id3
    labelFetch
    • Para incluir o resultado da consulta no Data Set e  formatar os dados do relatório, selecione o evento fetch na área de Script e inclua o seguinte códigoconforme figura 10.
    Bloco de código
    languagejavascript
    if (dataset != null) {
    	if (count <	dataset.rowsCount){
    		//monta o objeto da linha
    		row["colleagueId"] = 
    Card
    id3
    labelFetch
    Para incluir o resultado da consulta no Data Set e  formatar os dados do relatório, selecione o evento fetch na área de Script e inclua o seguinte códigoconforme figura 13.
    Bloco de código
    languagejavascript
    if (dataset != null) {
    	if (count <	dataset.rowsCount){
    		//monta o objeto da linha
    		row["colleagueId"] = dataset.getValue(count, "colleaguePK.colleagueId");
    		row["login"] = dataset.getValue(count, "login");
    		row["colleagueName"] = dataset.getValue(count, "colleagueName");
    		row["mail"] = dataset.getValue(count, "mail");
    		
    		if(dataset.getValue(count, "activecolleaguePK.colleagueId") == true){;
    			row["activelogin"] = "Sim"dataset.getValue(count, "login");
    		}else{
    			row["activecolleagueName"] = "Não"dataset.getValue(count, "colleagueName");
    		}
    		
    		//Atualiza o contador  
    		count++;
    		return true;
    	}
    	return false;
    }

    Image Removed

    Figura 13 - Evento fetch.

     

    row["mail"] = dataset.getValue(count, "mail");
    		
    		if(dataset.getValue(count, "active") == true){
    			row["active"] = "Sim";
    		}else{
    			row["active"] = "Não";
    		}
    		
    		//Atualiza o contador  
    		count++;
    		return true;
    	}
    }
    return false;

    Image Added

    Figura 10 - Evento fetch.



    Obtendo dados via conexão JDBC

    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.

    Deck of Cards
    effectDuration0.5
    historyfalse
    idsamples
    historyfalse
    effectTypefade
    Card
    defaulttrue
    id1
    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 1411.

      Figura 14 11 – Novo Data Source


     
    Card
    id2
    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 1512.

      Figura 15 12 – Tipo Data Source


    Card
    id3
    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 Password de acordo com o banco de dados escolhido, conforme a figura 1613.

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


     

    • Selecione o DataSource 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.

    Image Removed

    Figura 18 – Configurando Data Set.

     

    •  Na próxima tela informe a SQL que busca os dados no banco de dados, neste exemplo, serão buscados os volumes da empresa autenticada no Fluig.

    Image Removed

    Figura 19 – Criação da Query SQL

    • A Query abaixo busca no banco de dados todos os volumes da empresa do usuário autenticado no Fluig, este código é obtido através da TAG ${WKCompany}.

    Card
    id4
    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.

      Image Removed

      Figura 17 – Criando Novo Data Set.

    Card
    id5
    labelPasso 5
    Card
    id6
    labelPasso 6
    Bloco de código
    languagejava
    SELECT vol_fisic.CD_VOL_FISIC,
             vol_fisic.COD_EMPRESA,
             vol_fisic.NOM_DIR_FISIC,
             vol_fisic.ID_TIP_VOL_FISIC
    FROM vol_fisic
    WHERE vol_fisic.COD_EMPRESA = ${WKCompany}
    Informações
    titleNota

    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 a seguir 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 Fluig, 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 Fluig, corrigindo o erro de sintaxe.

    Image Removed

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

    • seguida clique na opção New Data Set.

      Image Added

      Figura 14 – Criando Novo Data Set.


    Card
    id5
    labelPasso 5


    • Selecione o DataSource 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 15.

    Image Added

    Figura 15 – 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 volumes da empresa autenticada no fluig.

    Image Added

    Figura 16 – Criação da Query SQL


    • A Query abaixo busca no banco de dados todos os volumes da empresa do usuário autenticado no fluig, este código é obtido através da TAG ${WKCompany}.

    Bloco de código
    languagejava
    SELECT vol_fisic.CD_VOL_FISIC,
             vol_fisic.COD_EMPRESA,
             vol_fisic.NOM_DIR_FISIC,
             vol_fisic.ID_TIP_VOL_FISIC
    FROM vol_fisic
    WHERE vol_fisic.COD_EMPRESA = ${WKCompany}
    Informações
    titleNota

    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 a seguir 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 fluig, 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 fluig, corrigindo o erro de sintaxe.

    Image Added

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


    Card
    id7
    labelPasso 7
    • Após concluir a criação do Data Set, na seção Data Explorer da IDE, clique com o botão secundário do mouse sobre o Data Set criado e escolha a opção Editar.
    • Selecione a opção Query, escreva a query desejada e coloque o coringa ? no valor dos campos que estão na cláusula WHERE.

    Image Added

    Nota
    titleImportante

    A sintaxe da query deve ser a mesma do SGBD utilizado pelo Fluig.

    Card
    id8
    labelPasso 8
      • Ainda na tela de edição do DataSet, escolha o menu Parâmetros.
      • Nesta tela, adicionar os parâmetros através do botão Novo, oueditar os parâmetros existentes através do botão Editar.
      • Informar:
        • nome
        • tipo
        • direção
        • valor inicial
        • parâmetro do relatório

    Image Added

    Card
    labelPasso 9
    • Após o término da edição, o relatório deve ser exportado para o Fluig.
    • Ao abrir o relatório no Fluig, será apresentada uma tela de filtro, na qual devem ser informados os parâmetros que foram configurados no Fluig Studio.

    Image Added

    Nota
    titleAtenção

    A criação de relatório no Birt BIRT utilizando conexão JDBC exige atenção com relação à segurança da publicação do relatório no Fluigfluig, 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 Fluigfluig, sempre recomendamos a criação de relatórios com fontes de dados via Dataset do Fluigou fluig ou query JPA.

    Se a criação de relatórios utilizando JDBC for necessária, recomendamos que ao publicar um relatório no Fluig fluig 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.

    ...


    Formatando a visualização do Relatório

    É 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 2118.

    Figura 21 18 – 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:

    ...

    Deck of Cards
    history
    effectDuration0.5
    historyfalse
    idsamples
    falseeffectTypefade
     
    Card
    defaulttrue
    id1
    labelComponente Image


    • É 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.

      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.

      Figura 22 19 – Componente Image.


    Card
    id2
    labelComponente Text


     

    • 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
    languagehtml/xml
    <br>
    <a href="http://www.fluig.com/">http://www.fluig.com/</a>
    <br><b>E-mail:</b> <a href="mailto:[email protected]">[email protected]</a>
    <br><b>Telefone:</b> 0800 882 9191
    <br>
    • Em seguida clique no botão OK conforme figura 2320.

    Figura 23 20 - Componente Text.


     
    Card
    id3
    labelComponente Label


    • Arraste um componente Label no relatório, clique duas vezes sobre o componente incluído  e digite Relatório de Usuários, na aba Property Editor - Label -> General defina a formatação da label, conforme figura 2421.

     

    Figura 24 21 - Título do relatório.


    Card
    id4
    labelComponente Table


     

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

    Figura 25 22 - Configuração da Tabela.


    Card
    id5
    labelLables para Table


     

    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.

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

    Figura 26 23 - Título das Colunas.

    ...



    Renderizando dados do Data Set

    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. 

    Image Removed

    Figura 27 - Data Set.

     

    Publicando Relatórios

    Publicação

    conforme figura 24. 

    Image Added

    Figura 24 - Data Set.


    Publicando Relatórios

    Após a conclusão do desenvolvimento do relatório, é necessário realizar a publicação do relatório no fluig. Essa ação pode ser feita via navegação de Documentos (consulte aqui o passo a passo) ou por meio do fluig Studio.

    Publicação através do Studio

    Painel
    titleoculto

    Esse passo a passo está duplicado no artigo https://centraldeatendimento.fluig.com/hc/pt-br/articles/360053078854 (Como publicar relatórios)

    Caso tenha alguma alteração, lembrar de revisar esse artigo!

    Após a conclusão do desenvolvimento do relatório, é necessário realizar a exportação do mesmo para a navegação de documentos Fluigfluig.

    Deck of Cards
    history
    effectDuration0.5
    historyfalse
    idsamples
    falseeffectTypefade
     
    Card
    defaulttrue
    id1
    labelPasso1


    Para isso clique sobre o pasta do relatório com o botão direito do mouse e acione Exportar.

    Figura 28 25 – Exportação de Relatório.


    Informações
    titleNota

    Os anexos são exportados junto ao relatório. Na exportação, o arquivo .rptdesign é automaticamente identificado como arquivo principal, e os demais arquivos são classificados como anexo.

     
    Card
    id2
    labelPasso 2


    • Na tela de Exportação, clique sobre Expotar Exportar para o servidor Fluigfluig e em seguida acione Avançar. 


      Figura 29 26 – Exportação de relatório.


     
    Card
    id3
    labelPasso 3


    • Na tela Exportar Relatório, é necessário informar o nome do Servidor, identificar se está será a publicação de um Novo Relatório, definir o nome do relatório, a Pasta Destino (conforme imagem foi informado o código da pasta destino) e em seguida mencionar o tipo de Versionamento (como estamos fazendo uma nova publicação, selecionamos Manter Atual).

      Figura 29 27 – Exportação de relatório.


    Card
    id4
    labelPasso 4


     

    • Na pasta Relatório da Navegação de Documentos será possível observar que o relatório foi publicado com sucesso.

    Figura 29 28 – Publicação de relatório.

     



    Visualizador de Relatórios

    Após concluir a publicação, para visualizá-lo, clique sobre o relatório na pasta onde foi feita a publicação no Fluigfluig.

    Uma nova janela deverá abrir, para iniciar a execução do relatório de colaboradores desenvolvido anteriormente é necessária a inclusão de parâmetros, defina os seus valores e em seguida clique no botão OK.

    Figura 32 29 – Parâmetros do relatório.

     


    O relatório deverá mostrar todos os usuários cadastrados no Fluig fluig para a empresa em que o usuário está autenticado.

    Figura 33 30 – Relatório de Usuários– Resultado.

    ...

    • Verificar Indice: Caso o relatório desenvolvido possua índice é possível listá-lo.
    • Executar relatório: Permite que o relatório seja executado novamente.
    • Exportar dados: Exporta os dados gerados do relatório em arquivo, permitindo selecionar as colunas desejadas e o separador de dados.
    • Exportar relatório: Converte os dados do relatório em diferentes formatos de arquivos: Microsoft® Excel®, PostScript®, PDF, Microsoft® Word e Microsoft® Power Point®, permite também a seleção de páginas que serão exportadas.
    • Imprimir relatório: Imprime relatório selecionando as impressoras instaladas no computador do usuário autenticado e permite imprimir em formato PDF ou HTML.
    • Imprimir relatório no servidor: Imprime relatório a partir das impressoras instaladas no servidor do Fluigfluig.
    • Navegação de páginas: permite a navegação entre as páginas do relatório.

    Image Modified

    Figura 34 31 – Funcionalidades do visualizador de relatórios.


    JPA - Funções de Agregação

    Funções de Agregação

    O Fluig fluig suporta através de consultas JPA e seu banco de dados, o uso de funções de agregação, tais como: AVG, SUM, COUNT, MAX e MIN. Permite também utilizar agrupamentos: GROUP BY e HAVING

     


    Tabela de entidades

    A tabela abaixo referencia a relação entre o código de dataset, a entidade de persistência JPA utilizada nas consultas, e a respectiva tabela no banco de dados. As colunas das entidades de persistência são as mesmas apresentadas no dataset.

    Código dataset

    Entidade JPA

    Tabela banco de dados

    AccessLog

    AccessLog

    HISTOR_ACES

    ActivityDim

    ActivityDim

    ACTIVITY_DIM_CAP

    advancedProcessProperties

    AdvancedProcessProperties

    PROPRIED_AVANCAD_PROCES

    businessPeriod

    BusinessPeriod

    PERIOD_EXPED

    destinationArea

    DestinationArea

    AREA_DEST

    document

    Document

    DOCUMENTO

    documentSecurityConfig

    DocumentSecurityConfig

    CONFIGUR_SEGUR_DOCTO

    FactActivityCost

    FactActivityCost

    FACT_ACTIVITY_COST_CAP

    FactFlowVolume

    FactFlowVolume

    FACT_FLOW_VOLUME_CAP

    FactProcesCost

    FactProcesCost

    FACT_PROCES_COST_CAP

    FactProcesVolume

    FactProcesVolume

    FACT_PROCES_VOLUME_CAP

    FlowDim

    FlowDim

    FLOW_DIM_CAP

    globalCalendar

    GlobalCalendar

    CALEND_GLOBAL

    knowledge

    Knowledge

    CONHECIMENTO

    processAttachment

    ProcessAttachment

    ANEXO_PROCES

    processDefinition

    ProcessDefinition

    DEF_PROCES

    processDefinitionVersion

    ProcessDefinitionVersion

    VERS_DEF_PROCES

    processHistory

    ProcessHistory

    HISTOR_PROCES

    processState

    ProcessState

    ESTADO_PROCES

    processTask

    ProcessTask

    TAR_PROCES

    ProcesVersionDim

    ProcesVersionDim

    PROCES_VERSION_DIM_CAP

    TimeDim

    TimeDim

    TIME_DIM_CAP

    topic

    Topic

    ASSUNTO

    UserDim

    UserDim

    USER_DIM_CAP

    workflowProcess

    WorkflowProcess

    PROCES_WORKFLOW

     


    Exemplo de Utilização

    Bloco de código
    languagejava
    importPackage(Packages.com.datasul.technology.webdesk.dataset.service);
    importPackage(Packages.java.util);
    
    
    var qd = null;
    var rs = null;
    var rowMap = null;
    var sqlJpa = "";
    qd = new QueryDelegate();
    
    sqlJpa = "SELECT count(d.documentPK.documentId), d.publisherId from Document d WHERE
    d.documentPK.companyId = ${WKCompany} GROUP BY d.publisherId";
    
    rs = qd.getResultQuery(sqlJpa);
    
    var rowMap = rs.get(0);
    
    //Busca o valor do Count
    rowMap.get("d.publisherId");
    
    //Busca o Código do documento
    rowMap.get("count(d.documentPK.documentId)");

     


    Acessando dados de Formulários

    Importando bibliotecas

    A partir da classe DatasetFactory é possível acessar dados de formulários publicados no Fluigfluig.

    Para popular um relatório através de dados de fichários formulários é necessário a importação das seguintes bibliotecas:

    Bloco de código
    languagejava
    importPackage(Packages.com.datasul.technology.webdesk.dataset.service);
    
    importPackage(Packages.com.datasul.technology.webdesk.dataset);
    
    importPackage(Packages.com.datasul.technology.webdesk.search.controller);

     


    Retornando dados do formulário

    Através da classe DatasetFactory é possível buscar dados de formulários, incluir filtros e ordenação. Exemplo de utilização:

    Bloco de código
    languagejava
    //Monta as constraints para consulta
    var factory = DatasetFactory.getInstance(${WKCompany});
    
    //Filtra Clientes de 1 a 5
    var c1 = factory.createConstraint("cod_cli", "1", "5",ConstraintType.MUST);
    var constraints = new Array(c1);
    
    //Ordena o resultado pelo nome do Cliente
    var sortingFields = new Array("name_cli");
    dataset = factory.getDataset("cad_cli", null, constraints, sortingFields);

     


    O exemplo acima invoca o método getDataset passando alguns argumentos extras como parâmetros:

    ...

      • MUST: Indica que todos os registros do Dataset devem satisfazer a esta condição.
      • SHOULD: Indica que os registros do Dataset podem ou não atender à condição. Este tipo é mais comum quando se necessita que um mesmo campo tenha valores A ou B (onde cada um será uma constraint SHOULD).
      • MUST_NOT: indica que nenhum dos registros pode satisfazer a condição.
      • Ordenação: Vetor com a lista de campos que será utilizada para ordenação dos registros no Dataset.
    Dica
    titleDica

    O fonte do exemplo citado acima pode ser baixado a partir do seguinte link:

    ...

    Customer CardIndex.zip


    Busca de dados de

    ...

    formulário com filtro por data

    Para realizar consultas via Dataset com filtros do tipo Data, é necessário antes salvar o campo da ficha do formulário no formato aaaa/mm/dd (ano/mês/dia)  para que seja possível realizar a busca via Dataset.

    ...

    Bloco de código
    languagejava
    //Monta as constraints para consulta
    var factory = DatasetFactory.getInstance(${WKCompany});
    
    //Filtra Clientes de 1 a 5
    var c1 = factory.createConstraint("campo_data", "2010/01/25", "2010/05/02", ConstraintType.MUST);
    var constraints = new Array(c1);
    
    //Ordena o resultado pelo nome do Cliente
    var sortingFields = new Array("name_cli");
    dataset = factory.getDataset("cad_cli", null, constraints, sortingFields);

    Third Party Trademarks

    Adobe, Flash, Flex, Flex Builder, PostScript and Reader are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.

    Apache is a trademark of The Apache Software Foundation.

    Firefox and Mozilla are registered trademarks of the Mozilla Foundation.

    JavaScript is a trademark of Oracle Corporation.

    Microsoft, Active Directory, Excel, Internet Explorer, Outlook, PowerPoint, SQL Server, Windows and Windows Vista are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

    MySQL is a trademark of Oracle Corporation and/or its affiliates.

    Oracle, Java and OpenOffice.org are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

    Progress and OpenEdge are trademarks or registered trademarks of Progress Software Corporation or one of its subsidiaries or affiliates in the U.S. and other countries.

    Red Hat and JBoss are registered trademarks of Red Hat, Inc. in the United States and other countries.

    Any other third party trademarks are the property of their respective owners.

     resultado pelo nome do Cliente
    var sortingFields = new Array("name_cli");
    dataset = factory.getDataset("cad_cli", null, constraints, sortingFields);


    Acessando documentação do BIRT Report Designer

    Dica
    titleDica

    Acesse aqui a documentação oficial do BIRT - Business Intelligence and Reporting Tools e saiba mais sobre desenvolvimento e modelagem de relatórios .

    HTML
    <script>
    	$("b:contains('oculto')").parent().parent().hide();
    </script>

    ...