Á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

El propósito de esta guía es describir el desarrollo, la publicación y la visualización de informes en TOTVS Fluig Plataforma,y para facilitar su comprensión se detallará un ejemplo de informe de usuario.

 


Entorno de desarrollo

Para el desarrollo de informes es necesario tener Java™ JDK/JRE superior a 1.6. Dirección para download: http://java.sun.com/javase/downloads/index.jsp.

TOTVS Fluig Plataforma utilizar BIRT como motor de ejecución de informes, por eso para el desarrollo de informes se debe utilizar el estándar y la metodología de BIRT.

...

BIRT Report Designer cuenta con varias funcionalidades que ayudan en el desarrollo de informes. Entre ellas se destacan: el ajuste de layout, la configuración de acceso a datos y el formateo de informe.

 


Seguridad Entorno SaaS

En caso de ejecución de Fluig en entorno SaaS, no se recomienda el uso de informes, ya que se pueden crear informes que devuelvan información de otras empresas a través de la consulta JPQL o Dataset. Para garantizar la no ejecución, se debe definir el valor true para la variable SaaS ubicada en: %JBOSS_HOME%\jboss-as-7.2.0.Final\standalone\configuration\standalone.xml. Ej:

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

...


Conexión directa a la base de datos

...

Utilice en su informe las siguientes configuraciones prestando atención a los valores de las propiedades 'odaDriveClass' y 'odaURL'.

 


Para realizar una conexión directa con la base de datos SQLServer es necesario utilizar el siguiente estándar:

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 realizar una conexión directa con la base de datosMySQL es necesario utilizar el siguiente estándar:

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>

...


Desarrollo de un informe de Usuarios

...

Figura 1 - Creación de informe en el proyecto Fluig.

...


Configuración de acceso a los datos

...

Deck of Cards
effectDuration0.5
historyfalse
idsampleshistoryfalse
effectTypefade
 
Card
defaulttrue
id1
labelPaso 1


  • Al crear el nuevo informe, seleccione la perspectiva Report Design y luego la pestaña Data Explorer, haga clic con el botón derecho del mouse sobre el ítem Data Source a continuación, seleccione la opción New Data Source

Figura 5 - Nuevo Data Source.

 


Card
id2
labelPaso 2


 

  • Al abrir la ventana New Data Source, seleccione la opción Scripted Data Source y defina el nombre dsColleague como Data Source Name a continuación haga clic en el botón Finalizar.

Figura 6 - Tipo de Data Source.


Card
id3
labelPaso 3


 

  • En la pestaña Data Explorer haga clic con el botón derecho del mouse sobre el ítem Data Sets a continuación haga clic en la opción New Data Set como muestra la figura 7. Data Set es una tabla temporal de BIRT en la que se almacenan los datos de Data Source y se renderizan en el informe.

Figura 7 - Nuevo Data Set.


 
Card
id4
labelPaso 4


  • Al abrir la ventana New Data Set defina colleagueDataSet como Data Set Name, haga clic en el botón Next en Output Columns haga clic en el botón Add y agregue todos los registros del DataSet. A continuación haga clic en el botón Finalizar


 

Column Name

Data Type

Column Alias

Display Name

colleagueId

String

Vacío

Vacío

Login

String

Vacío

Vacío

colleagueName

String

Vacío

Vacío

E-mail

String

Vacío

Vacío

active

String

Vacío

Vacío

adminuser

String

Vacío

Vacío

Figura 8 - Columnas del Data Set.

 



Inclusión de parámetros en el informe

...

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


  • Selecione la pestaña Data Explorer, a continuación haga clic con el botón derecho del mouse en el ítem Report Parameters, seleccione la opción New Parameter. 

Figura 9 - Parámetros del Informe.

 


 
Card
id2
labelPaso 2


  • La figura 10 muestra la ventana de inclusión de parámetros.

Figura 10 - Configuración de parámetros.


Al abrir la ventana New Parameter incluya los siguientes parámetros: 


Matrícula

Campo
Valor
NameMatrícula
Prompt textMatrícula del Usuario o "*" para mostrar todos
Data typeString
Display typeText Box
Is Requiredtrue

 


Muestra Usuarios

Campo
Valor
NameparamEnable
Prompt textMostrar usuarios
Data typeString
Display typeList Box
Is Requiredtrue

Selection Values

Value
Display Text
*Todos
trueActivos
falseInactivos

 


Ordenar Por

Campo
Valor
NameparamSort
Prompt textOrdenar por
Data typeString
Display typeList Box


Selection Values

Value
Display Text
c.colleaguePK.colleagueIdMatrícula
c.collegueNameNombre
c.loginLogin

 


TAG's

TOTVS Fluig Plataforma ofrece TAG’s de reemplazo que ayudan al desarrollo y la seguridad de la generación de información del informe, estas son:

• ${WKCompany}: sustituye a la variable por el código de la empresa autenticada en TOTVS Fluig Plataforma.
• ${WKUser}: sustituye a la variable por el código del usuario autenticado en TOTVS Fluig Plataforma.

Las TAG’s son útiles en los casos de información que sólo deben generarse sobre la empresa en la cual el usuario está autenticado, o en informes que muestran sólo información sobre el usuario autenticado en TOTVS Fluig Plataforma. 


Completar el Data Set

En el ejemplo que se presenta en este documento se completará el informe a través de datos proporcionados por consultas JPA ingresando a la base de TOTVS Fluig Plataforma, pero se pueden utilizar otros recursos para completar el Data Set: XML, Web Service y JDBC.

...

A través de los eventos se puede desarrollar la lógica de consulta y generación de datos a través del lenguaje de programación JavaScript, también es posible utilizar varios recursos y bibliotecas del lenguaje Java ™. 


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


  • Seleccione la pestaña Script en la página del informe y a continuación seleccione el evento initialize, incluya el siguiente código como muestra la figura 11:
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;

Figura 11 - Evento initialize.




    • El código anterior importa las bibliotecas Java ™ y la biblioteca proporcionada por Fluig para consultar los datos de productos, y además realizar la inicialización de las variables utilizadas en el informe.

      Detalles sobre el código:

        • importPackage: comando responsable de la importación de bibliotecas Java™.
        • Package.java.util: biblioteca responsable de las Clases utils de Java™.
        • Packages.com.datasul.technology.webdesk.dataset.service: biblioteca ofrecida por Fluig para consultar la base de datos del producto.
       




 
Card
id2
labelBeforeOpen


  • Seleccione la pestaña Data Explorer, abra el ítem Data Sets y haga clic en colleagueDataSet, a continuación haga clic en la pestaña Script y luego seleccione el evento beforeOpen e incluya el siguiente código, como se muestra en la 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 sólo por la matrícula del 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 activos si está seleccionada
	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 según la selección
	if(params["paramSort"].value != null &amp;&amp; params["paramSort"].value != "*"){
		sortingFields[0] = params["paramSort"].value;
	}	
	
	//Dataset
	dataset = factory.getDataset("colleague", null, constraints, sortingFields);
	
}catch (e) {
}finally {
}

Figura 12 - Evento BeforeOpen.


  • El código anterior presenta la consulta del informe a través de la consulta por dataset e incluye los filtros de la solicitud de acuerdo con los parámetros definidos por el usuario.

    Detalles sobre el código:

    • ${WKCompany}: TAG ofrecida por Fluig, devuelve el código de la empresa en la cual el usuario está autenticado;
    • params["Matricula"]: parámetro de informe, devuelve el código de la matrícula definido por el usuario;
    • params["paramEnable "]: parámetro de informe, devuelve el tipo de usuario;
    • params["paramSort "]: parámetro de informe, devuelve el modo de ordenar;


Card
id3
labelFetch
  • Para incluir el resultado de la consulta en el Data Set y  formatear los datos del informe, seleccione el evento fetch en el área de Script e incluya el siguiente códigocomo se muestra en la figura 13.
Bloco de código
languagejavascript
if (dataset != null) {
	if (count <	dataset.rowsCount){
		//instala el objeto de la línea
		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"] = "Sí";
		}else{
			row["active"] = "No";
		}
		
		//Actualiza el contador  
		count++;
		return true;
	}
	return false;
}

Figura 13 - Evento fetch.

 



Obtención de datos por conexión JDBC

...

Deck of Cards
effectDuration0.5
historyfalse
idsampleshistoryfalse
effectTypefade
 
Card
defaulttrue
id1
labelPaso 1


  • Seleccione la pestaña Data Explorer, haga clic con el botón derecho del mouse en el ítem Data Source y a continuación, seleccione la opción New Data Source como se muestra en la figura 14.

    Figura 14 – Nuevo Data Source


 
Card
id2
labelPaso 2


  • Al abrir la ventana New Data Source, seleccione la opción JDBC DataSource y defina el nombre JDBC-DataSource como Data Source Name a continuación, haga clic en el botón Next, como muestra la figura 15.

    Figura 15 – Tipo Data Source


Card
id3
labelPaso 3


 

  • En la siguiente ventana se debe configurar la conexión a la base de datos. 

    En el campo Driver Class seleccione el driver de conexión a la base de datos, en este caso, la conexión se realizará a la base MySQL®. Si el driver necesario no está en la lista, simplemente debe agregarlo haciendo clic en Managed Drivers...

    Informe también los valores de Database URL, User Name Password de acuerdo a la base de datos elegida, como muestra la figura 16.

    Figura 16 – Configuración de la conexión con base de datos.


Card
id4
labelPaso 4


 

  • En la pestaña Data Explorer haga clic con el botón derecho del mouse sobre el ítem Data Sets a continuación, haga clic en la opción New Data Set.

    Figura 17 – Creación del Nuevo Data Set.


Card
id5
labelPaso 5


 

  • Seleccione  DataSource creado (JDBC-DataSource), en el campo Data Set Type seleccione SQL Select Query, informe un nombre para el  Data Set y haga clic en next, como muestra la figura 18.

Figura 18 – Configuración del Data Set.


Card
id6
labelPaso 6


  •  
  •  En la siguiente pantalla informe a SQL que busca los datos en la base de datos, en este ejemplo, se buscarán los volúmenes de la empresa autenticada en TOTVS Fluig Plataforma.

Figura 19 – Creación de Query SQL


  • El siguiente Query busca en la base de datos todos los volúmenes de la empresa del usuario autenticado en TOTVS Fluig Plataforma, este código se obtiene a través de la 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

Puede ocurrir algún error al finalizar la creación del Data Set ya que la TAG  ${WKCompany} no existe en el contexto de BIRT. La siguiente figura muestra el error debido al uso de la TAG, se trata de un error de sintaxis en SQL e indica que ${WKCompany} no es un comando SQL. Pero cuando el informe se ejecuta en Fluig, devuelve el código de la empresa normalmente, así la TAG se reemplazará por el código de la empresa del usuario autenticado en TOTVS Fluig Plataforma, corrigiendo el error de sintaxis..

Figura 20 – Error de Birt por el uso de la TAG ${WKCompany}


Nota
titleAtención

La creación de informe en Birt usando conexión JDBC exige atención con respecto a la seguridad de la publicación del informe en Fluig, ya que el archivo .rptdesign (XML de informe Birt) deja expuestos los parámetros de conexión a la base de datos, pero el campo contraseña queda oculto con base64. Por este motivo y por la facilidad de búsqueda de información de Fluig, siempre recomendamos crear informes con fuentes de datos a través de Dataset de Fluig o Query JPA.

Si la creación de informes utilizando JDBC es necesaria, se recomienda que cuando se publica un informe en Fluig la configuración de permisos se defina como sólo lectura. Los usuarios que poseen permiso de mantenimiento pueden realizar el download de los adjuntos y por lo tanto tendrán acceso a los datos de conexión a la base de datos.

 


Formatear la visualización del informe

...

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


  • Es posible incluir imágenes de internet, incluir imágenes de archivo o incluso integrar la imagen en XML del informe. En este ejemplo, se utilizará una imagen adjunta para posteriormente mostrar cómo publicar informes con adjuntos.

    Arraste un componente Image en el informe, al abrir la ventana Edit Image Ítem, seleccione la opción Image file in shared resources, seleccione el archivo de imagen en la opción Enter resource file e a continuación, haga clic en el botón Insert.

    Figura 22 – Componente Image.


 
Card
id2
labelComponente Text


  • Arraste un componente Text en el informe, al abrir la ventana Edit Text Item seleccione la opción HTML y en el área de texto incluya la siguiente información formateada en 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>
  • A continuación haga clic en el botón OK como muestra la figura 23.

Figura 23 - Componente Text.


Card
id3
labelComponente Label


 

  • Arraste un componente Label en el informe, haga doble clic sobre el componente incluido  e ingrese Informe de Usuarios, en la pestaña Property Editor - Label -> General defina el formato de label, como muestra la figura 24.

 

Figura 24 - Título del informe.


 
Card
id4
labelComponente Table


  • Arraste un componente Table, al abrir la ventana Insert Table defina 6 columnas y 1 detalle y, haga clic en el botón OK como muestra la figura 25.

Figura 25 - Configuración de la Tabla.


Card
id5
labelLables para Table


 

En la tabla agregada al informe incluya un componente Label para cada columna de la línea Header Row defina los siguientes valores:

  • Matrícula.
  • Nombre.
  • Login.
  • E-mail.
  • Activo.
  • Administrador.

Formatee las labels incluidas definiendo el color de la fuente y el color del fondo como muestra la figura 26.

Figura 26 - Título de las Columnas.

 



Renderización de datos del Data Set

Seleccione la pestaña Data Explorer y abra colleagueDataSet creado anteriormente y, a continuación arrastre cada ítem del Data Set a la columna Detail Row de la tabla creada anteriormente, como muestra la figura 27. 

Figura 27 - Data Set.

 


Publicación de Informes

Publicación

Al completar el desarrollo del informe, es necesario realizar la exportación del mismo para la navegación de documentos TOTVS Fluig Plataforma.

Deck of Cards
effectDuration0.5
historyfalse
idsampleshistoryfalse
effectTypefade
Card
defaulttrue
id1
labelPaso 1


 

Para ello, haga clic sobre la carpeta del informe con el botón derecho del mouse y presione Exportar.

Figura 28 – Exportación de Informe.


Informações
titleNota

Los adjuntos se exportan junto con el informe. En la exportación, el archivo .rptdesign se identifica automáticamente como archivo principal, y los otros archivos se clasifican como adjunto.

 
Card
id2
labelPaso 2


  • En la pantalla de Exportación, haga clic sobre Expotar al servidor Fluig y a continuación, presione Avanzar.

     


    Figura 29 – Exportación de informe.


 
Card
id3
labelPaso 3


  • En la pantalla Exportar Informe, es necesario informar el nombre del Servidor, identificar si será la publicación de un Nuevo Informe, definir el nombre del informe, la Carpeta de Destino (como en la imagen se informó el código de la carpeta de destino) y, a continuación, mencionar el tipo de Versión (como se está realizando una nueva publicación, se debe seleccionar Mantener Actual).

    Figura 29 – Exportación de informe.


 
Card
id4
labelPaso 4


  • En la carpeta Informe de la Navegación de Documentos se podrá observar que el informe se publicó con éxito.

Figura 29 – Publicación de informe.

 



Visualizador de Informes

Después de completar la publicación, para poder verla, haga clic en el informe en la carpeta en el cual se hizo la publicación en TOTVS Fluig Plataforma.

Una nueva ventana se abrirá, para iniciar la ejecución del informe de colaboradores desarrollado previamente, se necesita la inclusión de parámetros, defina sus valores y a continuación haga clic en el botón OK .

...

Figura 33 – Informe de Usuarios– Resultado.

 


El informe deberá mostrar todos los usuarios registrados en TOTVS Fluig Plataforma para la empresa en la cual el usuario está autenticado.

...

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

...



Opciones del visualizador

...

Fluig soporta a través de consultas JPA y su base de datos, el uso de las funciones de agregación, como por ejemplo: AVG, SUM, COUNT, MAX y MIN. Permite también utilizar agrupaciones: GROUP BY y HAVING

 


Tabla de entidades

La siguiente tabla hace referencia a la relación entre el código de dataset, la entidad de persistencia JPA usada en las consultas, y la tabla correspondiente a la base de datos. Las columnas de las entidades de persistencia son las mismas presentadas en dataset.

Código dataset

Entidad JPA

Tabla base de datos

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

CONOCIMIENTO

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

ASUNTO

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 el valor de Count
rowMap.get("d.publisherId");
//Busca el Código del documento
rowMap.get("count(d.documentPK.documentId)");

...


Acceso a datos de Formularios

Importación de bibliotecas

A partir de la clase DatasetFactory se puede accede a los datos de formularios publicados en Fluig.

Para llenar un informe a través de datos del fichero es necesario importar las siguientes 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);

 


Devolución de datos del formulario

...

Bloco de código
languagejava
//Instala las 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 el resultado por el nombre del Cliente
var sortingFields = new Array("name_cli");
dataset = factory.getDataset("cad_cli", null, constraints, sortingFields);

...


El ejemplo anterior invoca el método getDataSet pasando algunos argumentos adicionales como parámetros:

...