...
O objetivo deste guia é descrever o desenvolvimento, publicação e visualização de relatórios no Fluigfluig, para facilitar a compreensão será detalhado um exemplo de relatório de usuários.
...
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.
O Fluig 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 Fluigfluig. O BIRT pode ser integrado ao Studio ou Eclipse (já instalados para utilização do Fluig 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:
...
Através do BIRT Report Designer é possível criar vários relatórios para o Fluigfluig, 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 Fluigfluig, 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 fluig através da consulta via dataset. O fonte do exemplo citado pode ser baixado a partir do seguinte link:
...
Abra a ferramenta na qual instalou o plugin do BIRT Report Designer para acompanhar o passo a passo, no exemplo iremos utilizar o Fluig fluig Studio.
- No projeto Fluig fluig previamente criado, clique com o botão direito do mouse na pasta reports, e em seguida em Novo -> Relatório Fluigfluig.
- Em seguida basta informar o Nome do Relatório e clicar em Concluir.
...
Figura 1 - Criação de relatório no projeto Fluigfluig.
Configurando o acesso aos dados
...
Deck of Cards |
---|
effectDuration | 0.5 |
---|
id | samples |
---|
history | false |
---|
effectType | fade |
---|
|
Card |
---|
default | true |
---|
id | 1 |
---|
label | Passo1 |
---|
| - 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.

Figura 9 - Parâmetros do Relatório. |
Card |
---|
| 
Figura 10 - Configuração de parâmetros.
Ao abrir a janela New Parameter inclua os seguintes parâmetros: Matrícula Campo | Valor |
---|
Name | Matricula | Prompt text | Matrícula do Usuário ou "*" para mostrar todos | Data type | String | Display type | Text Box | Is Required | true |
Mostra Usuários Campo | Valor |
---|
Name | paramEnable | Prompt text | Mostrar usuários | Data type | String | Display type | List Box | Is Required | true |
Selection Values Value | Display Text |
---|
* | Todos | true | Ativos | false | Inativos |
Ordenar Por Campo | Valor |
---|
Name | paramSort | Prompt text | Ordenar por | Data type | String | Display type | List Box |
Selection Values Value | Display Text |
---|
c.colleaguePK.colleagueId | Matrícula | c.collegueName | Nome | c.login | Login |
|
|
TAG's
O Fluig 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 Fluigfluig.
• ${WKUser}: substitui a variável pelo código do usuário autenticado no Fluigfluig.
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 Fluigfluig.
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 Fluigfluig, porém é possível utilizar outros recursos para popular o Data Set: XML, Web Service e JDBC.
...
Deck of Cards |
---|
effectDuration | 0.5 |
---|
id | samples |
---|
history | false |
---|
effectType | fade |
---|
|
Card |
---|
default | true |
---|
id | 1 |
---|
label | Initialize |
---|
| - Selecione a aba Script na pagina do relatório e em seguida selecione o evento initialize, inclua o seguinte código conforme figura 11:
Bloco de código |
---|
| 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;
|

Figura 11 - Evento initialize. O código a cima importa as bibliotecas Java™ e a biblioteca disponibilizada pelo Fluig 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 fluig para consulta ao banco de dados do produto.
|
Card |
---|
| - 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 |
---|
| 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 && 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 && 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 {
}
|

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 Fluigfluig, 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 |
---|
| - 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 |
---|
| 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, "active") == true){
row["active"] = "Sim";
}else{
row["active"] = "Não";
}
//Atualiza o contador
count++;
return true;
}
}
return false; |

Figura 13 - Evento fetch.
|
|
...
Deck of Cards |
---|
effectDuration | 0.5 |
---|
id | samples |
---|
history | false |
---|
effectType | fade |
---|
|
Card |
---|
default | true |
---|
id | 1 |
---|
label | Passo 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 |
---|
| 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 |
---|
| 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 |
---|
| - 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.

Figura 18 – Configurando Data Set.
|
Card |
---|
| - 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 Fluigfluig.

Figura 19 – Criação da Query SQL
Bloco de código |
---|
| 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 |
---|
| 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 Fluigfluig, 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 Fluigfluig, corrigindo o erro de sintaxe. 
Figura 20 – Erro do Birt pelo uso da TAG ${WKCompany} |
|
|
Nota |
---|
|
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 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 Fluig 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. |
...
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 |
---|
effectDuration | 0.5 |
---|
id | samples |
---|
history | false |
---|
effectType | fade |
---|
|
Card |
---|
default | true |
---|
id | 1 |
---|
label | Passo1 |
---|
| Para isso clique sobre o pasta do relatório com o botão direito do mouse e acione Exportar. 
Figura 28 – Exportação de Relatório.
Informações |
---|
| 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 |
---|
| Na tela de Exportação, clique sobre Expotar para o servidor Fluigfluig e em seguida acione Avançar. 
Figura 29 – Exportação de relatório.
|
Card |
---|
| 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 – Exportação de relatório.
|
Card |
---|
| - Na pasta Relatório da Navegação de Documentos será possível observar que o relatório foi publicado com sucesso.

Figura 29 – Publicação de relatório.
|
|
...
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.
...
O relatório deverá mostrar todos os usuários cadastrados no Fluig fluig para a empresa em que o usuário está autenticado.
...
- 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.
...
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
...
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 é necessário a importação das seguintes bibliotecas:
...