Árvore de páginas

Versões comparadas

Chave

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

Índice

Índice
outlinetrue
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.

...

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

Se pueden publicar informes que se comuniquen directamente con la base de datos.

...

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

A través de BIRT Report Designer se pueden crear varios informes para Fluig, acceder a datos de la base de datos del producto a través de la consulta JPA, JDBC. Es posible acceder a los datos de otros productos por conexión JDBC, Web Service o archivos XML.

Para facilitar la comprensión sobre el desarrollo de informes para Fluig, se mostrará un ejemplo de creación de informes. A continuación se detallan los pasos necesarios para la creación de informe de usuarios, contando con datos proporcionados por Fluig por medio de consultas a través de dataset. La fuente del ejemplo citado se puede descargar desde el siguiente link:

Colleague Report.zip


Creación de un nuevo proyecto y un nuevo informe

Abra la herramienta en la que se instaló el plugin de BIRT Report Designer para seguir el paso a paso, en este ejemplo vamos a utilizar Fluig Studio.

...

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


Configuración de acceso a los datos

Un Data Source es el mecanismo que almacena los datos de conexión con la fuente de datos, por ejemplo, configuraciones JDBC, Web Service, entre otros. En el caso de este informe se utilizará el acceso a los datos a través de Javascript.

...

Deck of Cards
effectDuration0.5
historyfalse
idsamples
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

Es posible incluir parámetros en el informe que se solicita al usuario antes de su renderización, ayudando al filtro de consulta de datos generando un informe específico. Siga los siguientes pasos:

Deck of Cards
effectDuration0.5
historyfalse
idsamples
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:

...

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.

...

Deck of Cards
effectDuration0.5
historyfalse
idsamples
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

Una forma alternativa de obtención de datos para crear informes es el uso de JDBC. Es necesario crear un Data Source que se conecte a la base de datos, en él se almacenarán los datos para la conexión, a través de JDBC a la base de datos.

...

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

Se requiere la inclusión de los componentes de renderización del informe. Haga clic en la pestaña Layout para visualizar la página del informe que está en blanco y, a continuación, seleccione la pestaña Palette como muestra la figura 21.

...

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

...

Figura 34 – Funcionalidades de visualizador de informes.


JPA - Funciones de Agregación

Funciones de Agregación

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

A través de la clase DatasetFactory es posible buscar datos de formularios, incluir filtros y ordenar. Ejemplo de uso:

...