Árvore de páginas

Versões comparadas

Chave

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

<div id="main-content" class="wiki-content group">
	<h1 id="DesenvolvimentodeRelatórios-Índice">Índice</h1>
	<p>
		<style type='text/css'>/*<![CDATA[*/
div.rbtoc1412695710501 {
	padding: 0px;
}
div.rbtoc1412695710501 ul {
	list-style: none;
	margin-left: 0px;
}
div.rbtoc1412695710501 li {
	margin-left: 0px;
	padding-left: 0px;
}
/*]]>*/
</style>
	<div class='toc-macro rbtoc1412695710501'>
		<ul class='toc-indentation'>
			<li><span class='TOCOutline'>1</span> <a
				href='#DesenvolvimentodeRelatórios-Objetivo'>Objetivo</a></li>
			<li><span class='TOCOutline'>2</span> <a
				href='#DesenvolvimentodeRelatórios-AmbientedeDesenvolvimento'>Entorno
					de Desarrollo</a></li>
			<li><span class='TOCOutline'>3</span> <a
				href='#DesenvolvimentodeRelatórios-SegurançaAmbienteSaaS'>Seguridad
					Entorno SaaS</a></li>
			<li><span class='TOCOutline'>4</span> <a
				href='#DesenvolvimentodeRelatórios-Conexãodiretacomobancodedados'>Conexión
					directa a la base de datos</a></li>
			<li><span class='TOCOutline'>5</span> <a
				href='#DesenvolvimentodeRelatórios-DesenvolvendoumrelatóriodeUsuários'>Desarrollo
					de un informe de Usuarios</a>
				<ul class='toc-indentation'>
					<li><span class='TOCOutline'>5.1</span> <a
						href='#DesenvolvimentodeRelatórios-Criandoumnovoprojetoeumnovorelatório'>Creación
							de un nuevo proyecto y un nuevo informe</a></li>
					<li><span class='TOCOutline'>5.2</span> <a
						href='#DesenvolvimentodeRelatórios-Configurandooacessoaosdados'>Configuración
							de acceso a los datos</a></li>
					<li><span class='TOCOutline'>5.3</span> <a
						href='#DesenvolvimentodeRelatórios-IncluindoparâmetrosnoRelatório'>Inclusión
							de parámetros en el Informe</a></li>
					<li><span class='TOCOutline'>5.4</span> <a
						href='#DesenvolvimentodeRelatórios-TAG&#39;s'>TAG's</a></li>
					<li><span class='TOCOutline'>5.5</span> <a
						href='#DesenvolvimentodeRelatórios-PopulandooDataSet'>Completar
							el Data Set</a></li>
					<li><span class='TOCOutline'>5.6</span> <a
						href='#DesenvolvimentodeRelatórios-ObtendodadosviaconexãoJDBC'>Obtención
							de datos por conexión JDBC</a></li>
					<li><span class='TOCOutline'>5.7</span> <a
						href='#DesenvolvimentodeRelatórios-FormatandoavisualizaçãodoRelatório'>Formatear
							la visualización del Informe</a></li>
					<li><span class='TOCOutline'>5.8</span> <a
						href='#DesenvolvimentodeRelatórios-RenderizandodadosdoDataSet'>Renderización
							de datos del Data Set</a></li>
				</ul></li>
			<li><span class='TOCOutline'>6</span> <a
				href='#DesenvolvimentodeRelatórios-PublicandoRelatórios'>Publicación
					de Informes</a>
				<ul class='toc-indentation'>
					<li><span class='TOCOutline'>6.1</span> <a
						href='#DesenvolvimentodeRelatórios-Publicação'>Publicación</a></li>
				</ul></li>
			<li><span class='TOCOutline'>7</span> <a
				href='#DesenvolvimentodeRelatórios-VisualizadordeRelatórios'>Visualizador
					de Informes</a></li>
			<li><span class='TOCOutline'>8</span> <a
				href='#DesenvolvimentodeRelatórios-JPA-FunçõesdeAgregação'>JPA -
					Funciones de Agregación</a>
				<ul class='toc-indentation'>
					<li><span class='TOCOutline'>8.1</span> <a
						href='#DesenvolvimentodeRelatórios-FunçõesdeAgregação'>Funciones
							de Agregación</a></li>
					<li><span class='TOCOutline'>8.2</span> <a
						href='#DesenvolvimentodeRelatórios-Tabeladeentidades'>Tabla de
							entidades</a></li>
					<li><span class='TOCOutline'>8.3</span> <a
						href='#DesenvolvimentodeRelatórios-ExemplodeUtilização'>Ejemplo
							de Uso</a></li>
				</ul></li>
			<li><span class='TOCOutline'>9</span> <a
				href='#DesenvolvimentodeRelatórios-AcessandodadosdeFormulários'>Acceso
					a datos de Formularios</a>
				<ul class='toc-indentation'>
					<li><span class='TOCOutline'>9.1</span> <a
						href='#DesenvolvimentodeRelatórios-Importandobibliotecas'>Importación
							de bibliotecas</a></li>
					<li><span class='TOCOutline'>9.2</span> <a
						href='#DesenvolvimentodeRelatórios-Retornandodadosdoformulário'>Devolución
							de datos del formulario</a></li>
				</ul></li>
			<li><span class='TOCOutline'>10</span> <a
				href='#DesenvolvimentodeRelatórios-ThirdPartyTrademarks'>Third
					Party Trademarks</a></li>
		</ul>
	</div>
	</p>
	<h1 id="DesenvolvimentodeRelatórios-Objetivo">Objetivo</h1>
	<p>El propósito de esta guía es describir el desarrollo, la
		publicación y la visualización de informes en Fluig,y para facilitar
		su comprensión se detallará un ejemplo de informe de usuario.</p>
	<p>&#160;</p>
	<h1 id="DesenvolvimentodeRelatórios-AmbientedeDesenvolvimento">Entorno
		de desarrollo</h1>
	<p>
		Para el desarrollo de informes es necesario tener Java™ JDK/JRE
		superior a 1.6. Dirección para download: <a
			href="http://java.sun.com/javase/downloads/index.jsp"
			class="external-link" rel="nofollow">http://java.sun.com/javase/downloads/index.jsp</a>.
	</p>
	<p>Fluig 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.</p>
	<p>
		Se recomienda el uso de BIRT Report Designer para el desarrollo de
		informes para Fluig.&#160;<span
			style="font-size: 10.0pt; line-height: 13.0pt;">BIRT puede
			integrarse a Studio o Eclipse (ya instalado para utilizar Fluig
			Studio, según la <a href="73078179.html">Guía de Instalación
				Fluig Studio</a>), sólo debe instalar el plugin de BIRT. P
		</span><span style="font-size: 10.0pt; line-height: 13.0pt;">ara ello
			es necesario acceder a la opción <em>Ayuda -> Instalar Nuevo
				Software</em> y seguir los siguientes procedimientos:&#160;
		</span>
	</p>
	<ol>
		<li><em>Work with:</em> Seleccionar <em>Indigo</em>.</li>
		<li><span style="font-size: 10.0pt; line-height: 13.0pt;"><em>Búsqueda:</em>
				Después de enumerar las opciones de BIRT, ingresar <em>Birt</em> en
				el campo de búsqueda.</span></li>
		<li>Marcar la casilla de selección de <em>Business
				Intelligence, Reporting and Charting.</em></li>
		<li>A continuación, presionar <em>Avanzar</em>.
		</li>
	</ol>
	<p>
		<img class="confluence-embedded-image image-center"
			src="http://tdn.totvs.com/download/attachments/181962954/1.png?version=1&modificationDate=1425499190000&api=v2"
			data-image-src="http://tdn.totvs.com/download/attachments/181962954/1.png?version=1&modificationDate=1425499190000&api=v2">
	</p>
	<p>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.</p>
	<p>&#160;</p>
	<h1 id="DesenvolvimentodeRelatórios-SegurançaAmbienteSaaS">Seguridad
		Entorno SaaS</h1>
	<p>
		En caso de ejecución de Fluig en entorno SaaS<strong>,</strong> 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 <em>true&#160;</em>para
		la variable <em>SaaS</em>&#160;ubicada en: <em>%JBOSS_HOME%</em>\jboss-as-7.2.0.Final\standalone\configuration\standalone.xml.&#160;<span
			style="font-size: 10.0pt; line-height: 13.0pt;">Ej:</span>
	</p>
	<div class="code panel pdl" style="border-width: 1px;">
		<div class="codeContent panelContent pdl">
			<pre class="theme: Confluence; brush: xml; gutter: false"
				style="font-size: 12px;">&lt;simple name="java:global/webdesk/SaaS" value="true"/></pre>
		</div>
	</div>
	<p>&#160;</p>
	<h1 id="DesenvolvimentodeRelatórios-Conexãodiretacomobancodedados">Conexión
		directa a la base de datos</h1>
	<p>Se pueden publicar informes que se comuniquen directamente con
		la base de datos.</p>
	<p>
		Utilice en su informe las siguientes configuraciones prestando
		atención a los valores de las propiedades <em>'odaDriveClass'</em> y <em>'odaURL'.</em>
	</p>
	<p>&#160;</p>
	<p>
		Para realizar una conexión directa con la base de datos <strong>SQLServe</strong>r
		es necesario utilizar el siguiente estándar:
	</p>
	<div class="code panel pdl" style="border-width: 1px;">
		<div class="codeHeader panelHeader pdl"
			style="border-bottom-width: 1px;">
			<b>SQLServer</b>
		</div>
		<div class="codeContent panelContent pdl">
			<pre class="theme: Confluence; brush: html/xml; gutter: false"
				style="font-size: 12px;">&lt;property name="odaDriverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver&lt;/property> 
&lt;property name="odaURL">jdbc:sqlserver://IP:1433;databaseName=DATABASE&lt;/property></pre>
		</div>
	</div>
	<p>&#160;</p>
	<p>
		Para realizar una conexión directa con la base de datos<strong>MySQL</strong>
		es necesario utilizar el siguiente estándar:
	</p>
	<div class="code panel pdl" style="border-width: 1px;">
		<div class="codeHeader panelHeader pdl"
			style="border-bottom-width: 1px;">
			<b>MySQL</b>
		</div>
		<div class="codeContent panelContent pdl">
			<pre class="theme: Confluence; brush: html/xml; gutter: false"
				style="font-size: 12px;">&lt;property name="odaDriverClass">com.mysql.jdbc.Driver&lt;/property> 
&lt;property name="odaURL">jdbc:mysql://IP:3306/databaseName=DATABASE&lt;/property></pre>
		</div>
	</div>
	<p>&#160;</p>
	<h1 id="DesenvolvimentodeRelatórios-DesenvolvendoumrelatóriodeUsuários">Desarrollo
		de un informe de Usuarios</h1>
	<p>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.</p>
	<p>
		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 <em>dataset</em>. La fuente del ejemplo citado
		se puede descargar desde el siguiente link:
	</p>
	<p>
		<a href="attachments/74646056/74613049.zip">Colleague Report.zip</a>
	</p>
	<p>
		<em><br /></em>
	</p>
	<h3
		id="DesenvolvimentodeRelatórios-Criandoumnovoprojetoeumnovorelatório">Creación
		de un nuevo proyecto y un nuevo informe</h3>
	<p>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.</p>
	<ul>
		<li>En el proyecto Fluig previamente creado, haga clic en el
			botón derecho del mouse en la carpeta <em>reports</em>, y a
			continuación en <em>Nuevo -> Informe Fluig.</em>
		</li>
		<li>Luego, sólo debe informar el <em>Nombre del informe</em> y
			hacer clic en <em>Finalizar</em>.
		</li>
	</ul>
	<p>
		<img class="confluence-embedded-image image-center"
			src="http://tdn.totvs.com/download/attachments/181962954/2.png?version=1&modificationDate=1425499194158&api=v2"
			data-image-src="http://tdn.totvs.com/download/attachments/181962954/2.png?version=1&modificationDate=1425499194158&api=v2">
	</p>
	<p style="text-align: center;">
		<strong>Figura 1 - Creación de informe en el proyecto Fluig.</strong>
	</p>
	<p>&#160;</p>
	<h3 id="DesenvolvimentodeRelatórios-Configurandooacessoaosdados">Configuración
		de acceso a los datos</h3>
	<p>
		Un <em>Data Source</em> 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.
	</p>
	<p>Siga los siguientes pasos:</p>
	<a name="composition-deck-samples"></a>
	<div id="samples" class="deck" history="false" loopcards="false"
		effecttype="fade" effectduration="0.5" nextafter="0.0">
		<ul class="tab-navigation"></ul>
		<!-- // .tab-navigation -->
		<div class="deck-cards panel" style="">
			<div id="1" class="deck-card  active-pane" style="" cssclass=""
				accesskey="" label="Passo1" title="" nextafter="0"
				effecttype="default" effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li>Al crear el nuevo informe, seleccione la perspectiva <em>Report
							Design</em> y luego la pestaña&#160;<em>Data Explorer</em>, haga clic
						con el botón derecho del mouse sobre el ítem&#160;<em>Data
							Source</em>&#160;a continuación, seleccione la opción&#160;<em>New
							Data Source</em>.&#160;
					</li>
				</ul>
				<p>
					<img class="confluence-embedded-image image-center"
						src="http://tdn.totvs.com/download/attachments/181962954/5.png?version=1&modificationDate=1425499325000&api=v2"
						data-image-src="http://tdn.totvs.com/download/attachments/181962954/5.png?version=1&modificationDate=1425499325000&api=v2">
				</p>
				<p style="text-align: center;">
					<strong>Figura 5 - Nuevo Data Source.</strong>
				</p>
				<p>&#160;</p>
			</div>
			<div id="2" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 2" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<div>
					<ul>
						<li>Al abrir la ventana <em>New Data Source,</em> seleccione
							la opción <em>Scripted Data Source</em> y defina el nombre <em>dsColleague</em>
							como <em>Data Source Name</em> a continuación haga clic en el
							botón <em>Finalizar.</em></li>
					</ul>
					<p>
						<img class="confluence-embedded-image image-center"
							src="http://tdn.totvs.com/download/attachments/181962954/6.png?version=1&modificationDate=1425499386000&api=v2"
							data-image-src="http://tdn.totvs.com/download/attachments/181962954/6.png?version=1&modificationDate=1425499386000&api=v2">
					</p>
					<p style="text-align: center;">
						<strong>Figura 6 - Tipo de Data Source.</strong>
					</p>
					<p>
						<strong><br /></strong>
					</p>
				</div>
			</div>
			<div id="3" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 3" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li><p>
							En la pestaña <em>Data Explorer</em> haga clic con el botón
							derecho del mouse sobre el ítem <em>Data Sets</em> a continuación
							haga clic en la opción <em>New Data Set</em> 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.
						</p></li>
				</ul>
				<p>
					<img class="confluence-embedded-image image-center"
						src="http://tdn.totvs.com/download/attachments/181962954/7.png?version=1&modificationDate=1425499433857&api=v2"
						data-image-src="http://tdn.totvs.com/download/attachments/181962954/7.png?version=1&modificationDate=1425499433857&api=v2">
				</p>
				<p style="text-align: center;">
					<strong>Figura 7 - Nuevo Data Set.</strong>
				</p>
				<p style="text-align: center;">
					<strong><br /></strong>
				</p>
			</div>
			<div id="4" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 4" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li><p>
							Al abrir la ventana <em>New Data Set</em> defina <em>colleagueDataSet</em>
							como <em>Data Set Name</em>, haga clic en el botón <em>Next</em>
							en <em>Output Columns</em> haga clic en el botón <em>Add</em> y
							agregue todos los registros del DataSet. A continuación haga clic
							en el botón Finalizar
						</p></li>
				</ul>
				<div>
					<p>&#160;</p>
					<div class="table-wrap">
						<table class="confluenceTable">
							<tbody>
								<tr>
									<td class="highlight confluenceTd"><p>
											<strong>Column Name</strong>
										</p></td>
									<td class="highlight confluenceTd"><p>
											<strong>Data Type</strong>
										</p></td>
									<td class="highlight confluenceTd"><p>
											<strong>Column Alias</strong>
										</p></td>
									<td class="highlight confluenceTd"><p>
											<strong>Display Name</strong>
										</p></td>
								</tr>
								<tr>
									<td class="confluenceTd"><p>colleagueId</p></td>
									<td class="confluenceTd"><p>String</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
								</tr>
								<tr>
									<td class="confluenceTd"><p>Login</p></td>
									<td class="confluenceTd"><p>String</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
								</tr>
								<tr>
									<td class="confluenceTd"><p>colleagueName</p></td>
									<td class="confluenceTd"><p>String</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
								</tr>
								<tr>
									<td class="confluenceTd"><p>E-mail</p></td>
									<td class="confluenceTd"><p>String</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
								</tr>
								<tr>
									<td class="confluenceTd"><p>active</p></td>
									<td class="confluenceTd"><p>String</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
								</tr>
								<tr>
									<td class="confluenceTd"><p>adminuser</p></td>
									<td class="confluenceTd"><p>String</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
									<td class="confluenceTd"><p>Vacío</p></td>
								</tr>
							</tbody>
						</table>
					</div>
					<p>&#160;</p>
					<p>
						<img class="confluence-embedded-image image-center"
							src="http://tdn.totvs.com/download/attachments/181962954/8.png?version=1&modificationDate=1425499506000&api=v2"
							data-image-src="http://tdn.totvs.com/download/attachments/181962954/8.png?version=1&modificationDate=1425499506000&api=v2">
					</p>
					<p style="text-align: center;">
						<strong>Figura 8 - Columnas del Data Set.</strong>
					</p>
					<p>&#160;</p>
				</div>
			</div>
		</div>
	</div>
	<!-- // .deck -->
	<p>
		<em><br /></em>
	</p>
	<h3 id="DesenvolvimentodeRelatórios-IncluindoparâmetrosnoRelatório">Inclusión
		de parámetros en el informe</h3>
	<p>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:</p>
	<a name="composition-deck-samples"></a>
	<div id="samples" class="deck" history="false" loopcards="false"
		effecttype="fade" effectduration="0.5" nextafter="0.0">
		<ul class="tab-navigation"></ul>
		<!-- // .tab-navigation -->
		<div class="deck-cards panel" style="">
			<div id="1" class="deck-card  active-pane" style="" cssclass=""
				accesskey="" label="Passo1" title="" nextafter="0"
				effecttype="default" effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li>Selecione la pestaña&#160;<em>Data Explorer</em>, a
						continuación haga clic con el botón derecho del mouse en el
						ítem&#160;<em>Report Parameters</em>, seleccione la opción&#160;<em>New
							Parameter.&#160;</em></li>
				</ul>
				<p>
					<img class="confluence-embedded-image image-center"
						src="http://tdn.totvs.com/download/attachments/181962954/9.png?version=1&modificationDate=1425499547000&api=v2"
						data-image-src="http://tdn.totvs.com/download/attachments/181962954/9.png?version=1&modificationDate=1425499547000&api=v2">
				</p>
				<p style="text-align: center;">
					<strong>Figura 9 - Parámetros del Informe.</strong>
				</p>
				<p>&#160;</p>
			</div>
			<div id="2" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 2" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<div>
					<ul>
						<li><p>La figura 10 muestra la ventana de inclusión de
								parámetros.</p></li>
					</ul>
					<p>
						<img class="confluence-embedded-image image-center"
							src="http://tdn.totvs.com/download/attachments/181962954/10.png?version=1&modificationDate=1425499609000&api=v2"
							data-image-src="http://tdn.totvs.com/download/attachments/181962954/10.png?version=1&modificationDate=1425499609000&api=v2">
					</p>
					<p style="text-align: center;">
						<strong>Figura 10 - Configuración de parámetros.</strong>
					</p>
					<p>
						<strong><br /></strong>
					</p>
					<p>Al abrir la ventana New Parameter incluya los siguientes
						parámetros:</p>
					<p>&#160;</p>
					<p>
						<strong>Matrícula</strong>
					</p>
					<div class="table-wrap">
						<table class="confluenceTable">
							<tbody>
								<tr>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Campo</span></th>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Valor</span></th>
								</tr>
								<tr>
									<td class="confluenceTd">Name</td>
									<td class="confluenceTd">Matrícula</td>
								</tr>
								<tr>
									<td class="confluenceTd">Prompt text</td>
									<td class="confluenceTd">Matrícula del Usuario o "*" para
										mostrar todos</td>
								</tr>
								<tr>
									<td class="confluenceTd">Data type</td>
									<td class="confluenceTd">String</td>
								</tr>
								<tr>
									<td colspan="1" class="confluenceTd">Display type</td>
									<td colspan="1" class="confluenceTd">Text Box</td>
								</tr>
								<tr>
									<td colspan="1" class="confluenceTd">Is Required</td>
									<td colspan="1" class="confluenceTd">true</td>
								</tr>
							</tbody>
						</table>
					</div>
					<p>&#160;</p>
					<p>
						<strong>Muestra Usuarios</strong>
					</p>
					<div class="table-wrap">
						<table class="confluenceTable">
							<tbody>
								<tr>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Campo</span></th>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Valor</span></th>
								</tr>
								<tr>
									<td class="confluenceTd">Name</td>
									<td class="confluenceTd">paramEnable</td>
								</tr>
								<tr>
									<td class="confluenceTd">Prompt text</td>
									<td class="confluenceTd">Mostrar usuarios</td>
								</tr>
								<tr>
									<td class="confluenceTd">Data type</td>
									<td class="confluenceTd">String</td>
								</tr>
								<tr>
									<td colspan="1" class="confluenceTd">Display type</td>
									<td colspan="1" class="confluenceTd">List Box</td>
								</tr>
								<tr>
									<td colspan="1" class="confluenceTd">Is Required</td>
									<td colspan="1" class="confluenceTd">true</td>
								</tr>
							</tbody>
						</table>
					</div>
					<p>
						<em>Selection Values</em>
					</p>
					<div class="table-wrap">
						<table class="confluenceTable">
							<tbody>
								<tr>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Value</span></th>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Display Text</span></th>
								</tr>
								<tr>
									<td class="confluenceTd">*</td>
									<td class="confluenceTd">Todos</td>
								</tr>
								<tr>
									<td class="confluenceTd">true</td>
									<td class="confluenceTd">Activos</td>
								</tr>
								<tr>
									<td class="confluenceTd">false</td>
									<td class="confluenceTd">Inactivos</td>
								</tr>
							</tbody>
						</table>
					</div>
					<p>&#160;</p>
					<p>
						<strong>Ordenar Por</strong>
					</p>
					<div class="table-wrap">
						<table class="confluenceTable">
							<tbody>
								<tr>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Campo</span></th>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Valor</span></th>
								</tr>
								<tr>
									<td class="confluenceTd">Name</td>
									<td class="confluenceTd">paramSort</td>
								</tr>
								<tr>
									<td class="confluenceTd">Prompt text</td>
									<td class="confluenceTd">Ordenar por</td>
								</tr>
								<tr>
									<td class="confluenceTd">Data type</td>
									<td class="confluenceTd">String</td>
								</tr>
								<tr>
									<td colspan="1" class="confluenceTd">Display type</td>
									<td colspan="1" class="confluenceTd">List Box</td>
								</tr>
							</tbody>
						</table>
					</div>
					<p>
						<em>Selection Values</em>
					</p>
					<div class="table-wrap">
						<table class="confluenceTable">
							<tbody>
								<tr>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Value</span></th>
									<th class="confluenceTh"><span
										style="color: rgb(0, 51, 102);">Display Text</span></th>
								</tr>
								<tr>
									<td class="confluenceTd">c.colleaguePK.colleagueId</td>
									<td class="confluenceTd">Matrícula</td>
								</tr>
								<tr>
									<td class="confluenceTd">c.collegueName</td>
									<td class="confluenceTd">Nombre</td>
								</tr>
								<tr>
									<td class="confluenceTd">c.login</td>
									<td class="confluenceTd">Login</td>
								</tr>
							</tbody>
						</table>
					</div>
				</div>
			</div>
		</div>
	</div>
	<!-- // .deck -->
	<p>&#160;</p>
	<h3 id="DesenvolvimentodeRelatórios-TAG&#39;s">TAG's</h3>
	<p>Fluig ofrece TAG’s de reemplazo que ayudan al desarrollo y la
		seguridad de la generación de información del informe, estas son:</p>
	<p>
		• ${WKCompany}: sustituye a la variable por el código de la empresa
		autenticada en Fluig.<br />• ${WKUser}: sustituye a la variable por
		el código del usuario autenticado en Fluig.
	</p>
	<p>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 Fluig.</p>
	<p>&#160;</p>
	<h3 id="DesenvolvimentodeRelatórios-PopulandooDataSet">Completar
		el Data Set</h3>
	<p>
		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 Fluig, pero se pueden utilizar otros recursos para
		completar el <em>Data Set</em>: XML, Web Service y JDBC.
	</p>
	<p>BIRT renderiza el informe a través de la ejecución de sus
		eventos, son muchos los eventos proporcionados por BIRT, en este
		ejemplo se utilizarán:</p>
	<ul>
		<li><em> initialize: </em> primer evento activado por BIRT, se
			recomienda utilizar este evento para importar bibliotecas e
			inicializar variables;</li>
		<li><em>beforeOpen</em>: evento activado, antes de BIRT abrir la
			conexión con la fuente de datos (<em>Data Source</em>);</li>
		<li><em>fetch</em>: evento activado por BIRT después de buscar
			cada registro en el Data Set y antes de aplicar los filtros y los
			campos calculados.</li>
	</ul>
	<p>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 ™.</p>
	<p>&#160;</p>
	<a name="composition-deck-samples"></a>
	<div id="samples" class="deck" history="false" loopcards="false"
		effecttype="fade" effectduration="0.5" nextafter="0.0">
		<ul class="tab-navigation"></ul>
		<!-- // .tab-navigation -->
		<div class="deck-cards panel" style="">
			<div id="1" class="deck-card  active-pane" style="" cssclass=""
				accesskey="" label="Initialize" title="" nextafter="0"
				effecttype="default" effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li>Seleccione la pestaña&#160;<em>Script</em>&#160;en la
						página del informe y a continuación seleccione el evento&#160;<em>initialize</em>,
						incluya el siguiente código como muestra la figura 11:
					</li>
				</ul>
				<div class="code panel pdl" style="border-width: 1px;">
					<div class="codeContent panelContent pdl">
						<pre class="theme: Confluence; brush: javascript; gutter: false"
							style="font-size: 12px;">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;
</pre>
					</div>
				</div>
				<p>
					<img class="confluence-embedded-image image-center"
						src="http://tdn.totvs.com/download/attachments/181962954/11.png?version=1&modificationDate=1425499688000&api=v2"
						data-image-src="http://tdn.totvs.com/download/attachments/181962954/11.png?version=1&modificationDate=1425499688000&api=v2">
				</p>
				<p style="text-align: center;">
					<strong>Figura 11 - Evento initialize.</strong>
				</p>
				<p>&#160;</p>
				<p>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.</p>
				<p>Detalles sobre el código:</p>
				<ul>
					<li style="list-style-type: none;"><ul>
							<li><em>importPackage</em>: comando responsable de la
								importación de bibliotecas Java™.</li>
							<li><em>Package.java.util</em>: biblioteca responsable de
								las Clases&#160;<em>utils</em>&#160;de Java™.</li>
							<li><em>Packages.com.datasul.technology.webdesk.dataset.service</em><span>:
									biblioteca ofrecida por Fluig para consultar la base de datos
									del producto.</span><span><br /></span><br /> <span><br /></span></li>
						</ul></li>
				</ul>
			</div>
			<div id="2" class="deck-card " style="" cssclass="" accesskey=""
				label="BeforeOpen" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li>Seleccione la pestaña <em>Data Explorer</em>, abra el ítem
						<em>Data Sets</em> y haga clic en <em>colleagueDataSet, a
							continuación haga clic en la pestaña Script </em> y luego seleccione
						el evento <em>beforeOpen</em> e incluya el siguiente código, como
						se muestra en la figura 12.
					</li>
				</ul>
				<div class="code panel pdl" style="border-width: 1px;">
					<div class="codeContent panelContent pdl">
						<pre class="theme: Confluence; brush: javascript; gutter: false"
							style="font-size: 12px;">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;&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;&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;&amp;amp; params["paramSort"].value != "*"){
		sortingFields[0] = params["paramSort"].value;
	}	
	
	//Dataset
	dataset = factory.getDataset("colleague", null, constraints, sortingFields);
	
}catch (e) {
}finally {
}
</pre>
					</div>
				</div>
				<p>
					<img class="confluence-embedded-image image-center"
						src="http://tdn.totvs.com/download/attachments/181962954/12.png?version=1&modificationDate=1425499730000&api=v2"
						data-image-src="http://tdn.totvs.com/download/attachments/181962954/12.png?version=1&modificationDate=1425499730000&api=v2">
				</p>
				<p style="text-align: center;">
					<strong>Figura 12 - Evento BeforeOpen.</strong>
				</p>
				<p>
					<strong><br /></strong>
				</p>
				<p>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.</p>
				<p>Detalles sobre el código:</p>
				<ul>
					<li>${WKCompany}: TAG ofrecida por Fluig, devuelve el código
						de la empresa en la cual el usuario está autenticado;</li>
					<li>params["Matricula"]: parámetro de informe, devuelve el
						código de la matrícula definido por el usuario;</li>
					<li>params["paramEnable "]: parámetro de informe, devuelve el
						tipo de usuario;</li>
					<li><span style="font-size: 10.0pt; line-height: 13.0pt;">params["paramSort
							"]: parámetro de informe, devuelve el modo de ordenar;</span><br /> <span
						style="font-size: 10.0pt; line-height: 13.0pt;"><br /></span></li>
				</ul>
			</div>
			<div id="3" class="deck-card " style="" cssclass="" accesskey=""
				label="Fetch" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<ul>
					<li>Para incluir el resultado de la consulta en el <em>Data
							Set</em> y&#160; formatear los datos del informe, seleccione el evento
						<em>fetch</em> en el área de <em>Script</em> e incluya el
						siguiente código<em> </em>como se muestra en la figura 13.
					</li>
				</ul>
				<div class="code panel pdl" style="border-width: 1px;">
					<div class="codeContent panelContent pdl">
						<pre class="theme: Confluence; brush: javascript; gutter: false"
							style="font-size: 12px;">if (dataset != null) {
	if (count &lt;	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;
}</pre>
					</div>
				</div>
				<p>
					<img class="confluence-embedded-image image-center"
						src="http://tdn.totvs.com/download/attachments/181962954/13.png?version=1&modificationDate=1425499779000&api=v2"
						data-image-src="http://tdn.totvs.com/download/attachments/181962954/13.png?version=1&modificationDate=1425499779000&api=v2">
				</p>
				<p style="text-align: center;">
					<strong>Figura 13 - Evento fetch<em>.</em></strong>
				</p>
				<p style="text-align: center;">
					<strong><em><br /></em></strong>
				</p>
			</div>
		</div>
	</div>
	<!-- // .deck -->
	<p>&#160;</p>
	<h3 id="DesenvolvimentodeRelatórios-ObtendodadosviaconexãoJDBC">Obtención
		de datos por conexión JDBC</h3>
	<p>
		Una forma alternativa de obtención de datos para crear informes es el
		uso de JDBC. Es necesario crear un <em>Data</em> <em>Source</em> 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.
	</p>
	<a name="composition-deck-samples"></a>
	<div id="samples" class="deck" history="false" loopcards="false"
		effecttype="fade" effectduration="0.5" nextafter="0.0">
		<ul class="tab-navigation"></ul>
		<!-- // .tab-navigation -->
		<div class="deck-cards panel" style="">
			<div id="1" class="deck-card  active-pane" style="" cssclass=""
				accesskey="" label="Passo 1" title="" nextafter="0"
				effecttype="default" effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li><p>
							Seleccione la pestaña&#160;<em>Data Explorer</em>, haga clic con
							el botón derecho del mouse en el ítem&#160;<em>Data Source</em>&#160;y
							a continuación, seleccione la opción&#160;<em>New Data
								Source</em>&#160;como se muestra en la figura 14.
						</p>
						<p>
							<img class="confluence-embedded-image image-center"
								src="http://tdn.totvs.com/download/attachments/181962954/14.png?version=1&modificationDate=1425499858000&api=v2"
								data-image-src="http://tdn.totvs.com/download/attachments/181962954/14.png?version=1&modificationDate=1425499858000&api=v2">
						</p>
						<p style="text-align: center;">
							<strong>Figura 14 – Nuevo Data Source</strong>
						</p>
						<p style="text-align: center;">
							<strong><br /></strong>
						</p></li>
				</ul>
			</div>
			<div id="2" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 2" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li><p>
							Al abrir la ventana&#160;<em>New Data Source,</em>&#160;seleccione
							la opción&#160;<em>JDBC DataSource</em>&#160;y defina el
							nombre&#160;<em>JDBC-DataSource</em>&#160;como&#160;<em>Data
								Source Name</em>&#160;a continuación, haga clic en el botón&#160;<em>Next</em>,
							como muestra la figura 15.
						</p>
						<p>
							<img class="confluence-embedded-image image-center"
								src="http://tdn.totvs.com/download/attachments/181962954/15.png?version=1&modificationDate=1425499896000&api=v2"
								data-image-src="http://tdn.totvs.com/download/attachments/181962954/15.png?version=1&modificationDate=1425499896000&api=v2">
						</p>
						<p style="text-align: center;">
							<strong>Figura 15 – Tipo Data Source</strong>
						</p>
						<p style="text-align: center;">
							<strong><br /></strong>
						</p></li>
				</ul>
			</div>
			<div id="3" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 3" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li><p>En la siguiente ventana se debe configurar la
							conexión a la base de datos.&#160;</p>
						<p>
							En el campo&#160;<em>Driver</em>&#160;<em>Class</em>&#160;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&#160;<em>Managed</em>&#160;<em>Drivers</em>...
						</p>
						<p>
							Informe también los valores de&#160;<em>Database URL, User
								Name&#160;</em>y&#160;<em>Password&#160;</em>de acuerdo a la base de
							datos elegida, como muestra la figura 16.
						</p>
						<p>
							<img class="confluence-embedded-image image-center"
								src="http://tdn.totvs.com/download/attachments/181962954/16.png?version=1&modificationDate=1425499939000&api=v2"
								data-image-src="http://tdn.totvs.com/download/attachments/181962954/16.png?version=1&modificationDate=1425499939000&api=v2">
						</p>
						<p style="text-align: center;">
							<strong>Figura 16 – Configuración de la conexión con
								base de datos.</strong>
						</p>
						<p style="text-align: center;">
							<strong><br /></strong>
						</p></li>
				</ul>
			</div>
			<div id="4" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 4" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li><p>
							En la pestaña&#160;<em>Data Explorer</em>&#160;haga clic con el
							botón derecho del mouse sobre el ítem&#160;<em>Data Sets</em>&#160;a
							continuación, haga clic en la opción&#160;<em>New Data Set</em>.
						</p>
						<p style="text-align: center;">
							<img class="confluence-embedded-image"
								src="http://tdn.totvs.com/download/attachments/181962954/17.png?version=1&modificationDate=1425499997000&api=v2"
								data-image-src="http://tdn.totvs.com/download/attachments/181962954/17.png?version=1&modificationDate=1425499997000&api=v2">
						</p>
						<p style="text-align: center;">
							<strong>Figura 17 – Creación del Nuevo Data Set.</strong>
						</p>
						<p style="text-align: center;">
							<strong><br /></strong>
						</p></li>
				</ul>
			</div>
			<div id="5" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 5" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li>Seleccione &#160;<em>Data</em><em>Source</em>&#160;creado
						(<em>JDBC-DataSource</em>), en el campo&#160;<em>Data Set
							Type</em>&#160;seleccione SQL&#160;<em>Select Query</em>, informe un
						nombre para el &#160;<em>Data Set&#160;</em>y haga clic en&#160;<em>next,
							como muestra la figura 18.</em></li>
				</ul>
				<p>
					<img class="confluence-embedded-image image-center"
						src="http://tdn.totvs.com/download/attachments/181962954/18.png?version=1&modificationDate=1425500071000&api=v2"
						data-image-src="http://tdn.totvs.com/download/attachments/181962954/18.png?version=1&modificationDate=1425500071000&api=v2">
				</p>
				<p style="text-align: center;">
					<strong>Figura 18 – Configuración del Data Set.</strong>
				</p>
				<p style="text-align: center;">
					<strong><br /></strong>
				</p>
			</div>
			<div id="6" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 6" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li>&#160;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 Fluig.</li>
				</ul>
				<p>
					<img class="confluence-embedded-image image-center"
						src="http://tdn.totvs.com/download/attachments/181962954/19.png?version=1&modificationDate=1425500115000&api=v2"
						data-image-src="http://tdn.totvs.com/download/attachments/181962954/19.png?version=1&modificationDate=1425500115000&api=v2">
				</p>
				<p style="text-align: center;">
					<strong>Figura 19 – Creación de Query SQL</strong>
				</p>
				<p style="text-align: center;">
					<strong><br /></strong>
				</p>
				<ul>
					<li><p>
							El siguiente <em>Query </em> busca en la base de datos todos los
							volúmenes de la empresa del usuario autenticado en Fluig, este
							código se obtiene a través de la TAG ${WKCompany}.
						</p></li>
				</ul>
				<div class="code panel pdl" style="border-width: 1px;">
					<div class="codeContent panelContent pdl">
						<pre class="theme: Confluence; brush: java; gutter: false"
							style="font-size: 12px;">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}</pre>
					</div>
				</div>
				<div class="aui-message hint shadowed information-macro">
					<p class="title">Nota</p>
					<span class="aui-icon icon-hint">Icon</span>
					<div class="message-content">
						<p>
							Puede ocurrir algún error al finalizar la creación del <em>Data</em>
							<em>Set</em> ya que la TAG&#160; ${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 Fluig, corrigiendo el error de sintaxis.
						</p>
						<p>
							<img class="confluence-embedded-image image-center"
								src="http://tdn.totvs.com/download/attachments/181962954/20.png?version=1&modificationDate=1425500167000&api=v2"
								data-image-src="http://tdn.totvs.com/download/attachments/181962954/20.png?version=1&modificationDate=1425500167000&api=v2">
						</p>
						<p style="text-align: center;">
							<strong>Figura 20 – Error de Birt por el uso de la TAG
								${WKCompany}</strong>
						</p>
					</div>
				</div>
				<p style="text-align: center;">
					<strong><br /></strong>
				</p>
			</div>
		</div>
	</div>
	<!-- // .deck -->
	<div class="aui-message warning shadowed information-macro">
		<p class="title">Atención</p>
		<span class="aui-icon icon-warning">Icon</span>
		<div class="message-content">
			<p>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.</p>
			<p>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.</p>
		</div>
	</div>
	<p>&#160;</p>
	<h3 id="DesenvolvimentodeRelatórios-FormatandoavisualizaçãodoRelatório">Formatear
		la visualización del informe</h3>
	<p>
		Se requiere la inclusión de los componentes de renderización del
		informe. Haga clic en la pestaña <em>Layout</em> para visualizar la
		página del informe que está en blanco y, a continuación, seleccione la
		pestaña <em>Palette</em> como muestra la figura 21.
	</p>
	<p>
		<img class="confluence-embedded-image image-center"
			src="http://tdn.totvs.com/download/attachments/185738005/17.png?version=1&modificationDate=1425500440000&api=v2"
			data-image-src="http://tdn.totvs.com/download/attachments/185738005/17.png?version=1&modificationDate=1425500440000&api=v2">
	</p>
	<p style="text-align: center;">
		<strong>Figura 21 – Informe en blanco.</strong>
	</p>
	<p>En la pestaña Pallets se pueden incluir varios componentes de
		visualización y renderización de datos entre ellos se encuentran:</p>
	<ul>
		<li>Label: Texto corto y estático.</li>
		<li>Text: Texto largo se puede formatear con TAG’s HTML.</li>
		<li>Dynamic Text: Texto dinámico proveniente del Data Set.</li>
		<li>Image: Inclusión de imágenes.</li>
		<li>Grid: Formateador de datos en Grid.</li>
		<li>Table: Tabla de datos.</li>
		<li>Chart: Gráficos de torta, línea, tubo, etc.</li>
	</ul>
	<a name="composition-deck-samples"></a>
	<div id="samples" class="deck" history="false" loopcards="false"
		effecttype="fade" effectduration="0.5" nextafter="0.0">
		<ul class="tab-navigation"></ul>
		<!-- // .tab-navigation -->
		<div class="deck-cards panel" style="">
			<div id="1" class="deck-card  active-pane" style="" cssclass=""
				accesskey="" label="Componente Image" title="" nextafter="0"
				effecttype="default" effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li><p>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.</p>
						<p>
							Arraste un componente&#160;<em>Image</em>&#160;en el informe, al
							abrir la ventana&#160;<em>Edit Image&#160;</em>Ítem, seleccione
							la opción&#160;<em>Image file in shared&#160;resources</em>,
							seleccione el archivo de imagen en la opción&#160;<em>Enter
								resource file e&#160;</em>a continuación, haga clic en el botón&#160;<em>Insert</em>.
						</p>
						<p>
							<img class="confluence-embedded-image image-center"
								src="attachments/74646056/75235792.png"
								data-image-src="attachments/74646056/75235792.png">
						</p>
						<p style="text-align: center;">
							<strong>Figura 22 – Componente Image.</strong>
						</p>
						<p style="text-align: center;">
							<strong><br /></strong>
						</p></li>
				</ul>
			</div>
			<div id="2" class="deck-card " style="" cssclass="" accesskey=""
				label="Componente Text" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li><p>
							Arraste un componente <em>Text</em> en el informe, al abrir la
							ventana <em>Edit Text Item</em> seleccione la opción <em>HTML</em>
							y en el área de texto incluya la siguiente información formateada
							en HTML:
						</p></li>
				</ul>
				<div class="code panel pdl" style="border-width: 1px;">
					<div class="codeContent panelContent pdl">
						<pre class="theme: Confluence; brush: html/xml; gutter: false"
							style="font-size: 12px;">&lt;br>
&lt;a href="http://www.fluig.com/">http://www.fluig.com/&lt;/a>
&lt;br>&lt;b>E-mail:&lt;/b> &lt;a href="mailto:[email protected]">[email protected]&lt;/a>
&lt;br>&lt;b>Teléfono:&lt;/b> 0800 882 9191
&lt;br></pre>
					</div>
				</div>
				<div>
					<ul>
						<li><p>
								A continuación haga clic en el botón <em>OK</em> como muestra la
								figura 23.
							</p></li>
					</ul>
				</div>
				<p>
					<img class="confluence-embedded-image image-center"
						src="attachments/74646056/75235799.png"
						data-image-src="attachments/74646056/75235799.png">
				</p>
				<p style="text-align: center;">
					<strong>Figura 23 - Componente Text.</strong>
				</p>
				<p style="text-align: center;">
					<strong><br /></strong>
				</p>
			</div>
			<div id="3" class="deck-card " style="" cssclass="" accesskey=""
				label="Componente Label" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li>Arraste un componente <em>Label</em> en el informe, haga
						doble clic sobre el componente incluido&#160; e ingrese <em>Informe
							de Usuarios,</em> en la pestaña <em>Property Editor - Label -> G</em><em>eneral</em>
						defina el formato de label, como muestra la figura 24.
					</li>
				</ul>
				<p>
					&#160;<img class="confluence-embedded-image image-center"
						src="attachments/74646056/75235800.png"
						data-image-src="attachments/74646056/75235800.png">
				</p>
				<p style="text-align: center;">
					<strong>Figura 24 - Título del informe.</strong>
				</p>
				<p style="text-align: center;">
					<strong><br /></strong>
				</p>
			</div>
			<div id="4" class="deck-card " style="" cssclass="" accesskey=""
				label="Componente Table" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li>Arraste un componente <em>Table</em>, al abrir la ventana
						<em>Insert Table</em> defina 6 columnas y 1 detalle y, haga clic
						en el botón <em>OK</em> como muestra la figura 25.
					</li>
				</ul>
				<p>
					<img class="confluence-embedded-image image-center"
						src="attachments/74646056/75235806.png"
						data-image-src="attachments/74646056/75235806.png">
				</p>
				<p style="text-align: center;">
					<strong>Figura 25 - Configuración de la Tabla.</strong>
				</p>
				<p style="text-align: left;">
					<strong><br /></strong>
				</p>
			</div>
			<div id="5" class="deck-card " style="" cssclass="" accesskey=""
				label="Lables para Table" title="" nextafter="0"
				effecttype="default" effectduration="-1.0">
				<p>&#160;</p>
				<p>
					En la tabla agregada al informe incluya un componente <em>Label</em>
					para cada columna de la línea <em>Header Row</em> defina los
					siguientes valores<em>:</em>
				</p>
				<ul>
					<li><span style="font-size: 10.0pt; line-height: 13.0pt;">Matrícula.</span></li>
					<li>Nombre.</li>
					<li>Login.</li>
					<li>E-mail.</li>
					<li>Activo.</li>
					<li>Administrador.</li>
				</ul>
				<p>
					Formatee las <em>labels</em> incluidas definiendo el color de la
					fuente y el color del fondo como muestra la figura 26.
				</p>
				<p>
					<img class="confluence-embedded-image image-center"
						src="attachments/74646056/75235812.png"
						data-image-src="attachments/74646056/75235812.png">
				</p>
				<p style="text-align: center;">
					<strong>Figura 26 - Título de las Columnas.</strong>
				</p>
				<p style="text-align: center;">
					<strong><br /></strong>
				</p>
			</div>
		</div>
	</div>
	<!-- // .deck -->
	<p>&#160;</p>
	<h3 id="DesenvolvimentodeRelatórios-RenderizandodadosdoDataSet">Renderización
		de datos del Data Set</h3>
	<p>
		Seleccione la pestaña <em>Data Explorer</em> y abra <em>colleagueDataSet</em>
		creado anteriormente y, a continuación arrastre cada ítem del <em>Data
			Set</em> a la columna <em>Detail Row</em> de la tabla creada
		anteriormente, como muestra la figura 27.&#160;
	</p>
	<p>
		<img class="confluence-embedded-image image-center"
			src="attachments/74646056/75235816.png"
			data-image-src="attachments/74646056/75235816.png">
	</p>
	<p style="text-align: center;">
		<strong>Figura 27 - Data Set.</strong>
	</p>
	<p style="text-align: left;">&#160;</p>
	<h1 style="text-align: left;"
		id="DesenvolvimentodeRelatórios-PublicandoRelatórios">Publicación
		de Informes</h1>
	<h3 style="text-align: left;"
		id="DesenvolvimentodeRelatórios-Publicação">Publicación</h3>
	<p>Al completar el desarrollo del informe, es necesario realizar la
		exportación del mismo para la navegación de documentos Fluig.</p>
	<a name="composition-deck-samples"></a>
	<div id="samples" class="deck" history="false" loopcards="false"
		effecttype="fade" effectduration="0.5" nextafter="0.0">
		<ul class="tab-navigation"></ul>
		<!-- // .tab-navigation -->
		<div class="deck-cards panel" style="">
			<div id="1" class="deck-card  active-pane" style="" cssclass=""
				accesskey="" label="Passo1" title="" nextafter="0"
				effecttype="default" effectduration="-1.0">
				<p>&#160;</p>
				<p>
					Para ello, haga clic sobre la carpeta del informe con el botón
					derecho del mouse y presione&#160;<em>Exportar</em>.
				</p>
				<p>
					<img class="confluence-embedded-image image-center"
						src="attachments/74646056/75236393.png"
						data-image-src="attachments/74646056/75236393.png">
				</p>
				<p style="text-align: center;">
					<strong>Figura 28 – Exportación de Informe.</strong>
				</p>
				<p style="text-align: left;">
					<strong><br /></strong>
				</p>
				<div class="aui-message hint shadowed information-macro">
					<p class="title">Nota</p>
					<span class="aui-icon icon-hint">Icon</span>
					<div class="message-content">
						<p>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.</p>
					</div>
				</div>
			</div>
			<div id="2" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 2" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<div>
					<ul>
						<li><p>
								<span>En la pantalla de Exportación, haga clic
									sobre&#160;<em>Expotar al servidor Fluig</em>&#160;y a
									continuación, presione&#160;<em>Avanzar</em>.
								</span>
							</p>
							<p>&#160;</p>
							<p>
								<img class="confluence-embedded-image image-center"
									src="attachments/74646056/75236394.png"
									data-image-src="attachments/74646056/75236394.png">
							</p>
							<p style="text-align: center;">
								<strong>Figura 29 – Exportación de informe.</strong>
							</p>
							<p style="text-align: center;">
								<strong><br /></strong>
							</p></li>
					</ul>
				</div>
			</div>
			<div id="3" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 3" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li><p>
							En la pantalla&#160;<em>Exportar Informe</em>, es necesario
							informar el nombre del&#160;<em>Servidor</em>, identificar si
							será la publicación de un&#160;<em>Nuevo Informe</em>, 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&#160;<em>Versión</em>&#160;(como se está
							realizando una nueva publicación, se debe seleccionar&#160;<em>Mantener
								Actual</em>).
						</p>
						<p>
							<img class="confluence-embedded-image image-center"
								src="attachments/74646056/75236396.png"
								data-image-src="attachments/74646056/75236396.png">
						</p>
						<p style="text-align: center;">
							<strong>Figura 29 – Exportación de informe.</strong>
						</p>
						<p style="text-align: center;">
							<strong><br /></strong>
						</p></li>
				</ul>
			</div>
			<div id="4" class="deck-card " style="" cssclass="" accesskey=""
				label="Passo 4" title="" nextafter="0" effecttype="default"
				effectduration="-1.0">
				<p>&#160;</p>
				<ul>
					<li>En la carpeta<em>&#160;Informe</em>&#160;de la&#160;<em>Navegación
							de Documentos</em>&#160;se podrá observar que el informe se publicó
						con éxito.
					</li>
				</ul>
				<p>
					<img class="confluence-embedded-image image-center"
						src="attachments/74646056/75236397.png"
						data-image-src="attachments/74646056/75236397.png">
				</p>
				<p style="text-align: center;">
					<strong>Figura 29 – Publicación de informe.</strong>
				</p>
				<p style="text-align: center;">
					<strong><br /></strong>
				</p>
			</div>
		</div>
	</div>
	<!-- // .deck -->
	<p>&#160;</p>
	<h1 style="text-align: left;"
		id="DesenvolvimentodeRelatórios-VisualizadordeRelatórios">Visualizador
		de Informes</h1>
	<p>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
		Fluig.</p>
	<p>
		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
		<em> OK </em>.
	</p>
	<p>
		<img class="confluence-embedded-image image-center"
			src="attachments/74646056/75236428.png"
			data-image-src="attachments/74646056/75236428.png">
	</p>
	<p style="text-align: center;">
		<strong>Figura 32 – Parámetros del informe.</strong>
	</p>
	<p>&#160;</p>
	<p>El informe deberá mostrar todos los usuarios registrados en
		Fluig para la empresa en la cual el usuario está autenticado.</p>
	<p>
		<img class="confluence-embedded-image image-center"
			src="attachments/74646056/75236430.png"
			data-image-src="attachments/74646056/75236430.png">
	</p>
	<p style="text-align: center;">
		<strong>Figura 33 – Informe de Usuarios– Resultado</strong>.
	</p>
	<p style="text-align: left;">
		<strong><br /></strong>
	</p>
	<p style="text-align: left;">
		<span
			style="color: rgb(0, 0, 0); font-size: 1.4em; font-weight: bold; line-height: normal;">Opciones
			del visualizador</span>
	</p>
	<p>La herramienta de visualización de informe de Fluig posee varias
		funcionalidades:</p>
	<ul>
		<li><em>Verificar Indice</em>: Si el informe desarrollado posee
			índice es posible ponerlo en la lista.</li>
		<li><em>Ejecutar informe</em>: Permite que el informe se ejecute
			nuevamente.</li>
		<li><em>Exportar datos: </em>Exporta los datos generados del
			informe en archivo, permitiendo seleccionar las columnas deseadas y
			el separador de datos.</li>
		<li><em>Exportar informe</em>: Convierte los datos del informe en
			diferentes formatos de archivos: Microsoft® Excel®, PostScript®, PDF,
			Microsoft® Word e Microsoft® Power Point®, permite también la
			selección de páginas que se exportarán.</li>
		<li><em>Imprimir informe</em>: Imprime informe seleccionando las
			impresoras instaladas en el ordenador del usuario autenticado y le
			permite imprimir en formato DF o HTML.</li>
		<li><em>Imprimir informe en el servidor: </em>Imprime informe
			desde las impresoras instaladas en el servidor de Fluig.</li>
		<li>Navegación de páginas: permite navegar entre las páginas del
			informe.</li>
	</ul>
	<p>
		<img class="confluence-embedded-image"
			src="attachments/74646056/75236439.png"
			data-image-src="attachments/74646056/75236439.png">
	</p>
	<p style="text-align: center;">
		<strong>Figura 34 – Funcionalidades de visualizador de
			informes.</strong>
	</p>
	<p style="text-align: left;">
		<strong><br /></strong>
	</p>
	<div>
		<h1 id="DesenvolvimentodeRelatórios-JPA-FunçõesdeAgregação">JPA -
			Funciones de Agregación</h1>
	</div>
	<h3 id="DesenvolvimentodeRelatórios-FunçõesdeAgregação">Funciones
		de Agregación</h3>
	<p>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</p>
	<p>&#160;</p>
	<h3 id="DesenvolvimentodeRelatórios-Tabeladeentidades">Tabla de
		entidades</h3>
	<p>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.&#160;Las columnas de las
		entidades de persistencia son las mismas presentadas en dataset.</p>
	<div class="table-wrap">
		<table class="confluenceTable">
			<tbody>
				<tr>
					<td class="highlight confluenceTd"><p>
							<strong>Código dataset</strong>
						</p></td>
					<td class="highlight confluenceTd"><p>
							<strong>Entidad JPA</strong>
						</p></td>
					<td class="highlight confluenceTd"><p>
							<strong>Tabla base de datos</strong>
						</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>AccessLog</strong>
						</p></td>
					<td class="confluenceTd"><p>AccessLog</p></td>
					<td class="confluenceTd"><p>HISTOR_ACES</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>ActivityDim</strong>
						</p></td>
					<td class="confluenceTd"><p>ActivityDim</p></td>
					<td class="confluenceTd"><p>ACTIVITY_DIM_CAP</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>advancedProcessProperties</strong>
						</p></td>
					<td class="confluenceTd"><p>AdvancedProcessProperties</p></td>
					<td class="confluenceTd"><p>PROPRIED_AVANCAD_PROCES</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>businessPeriod</strong>
						</p></td>
					<td class="confluenceTd"><p>BusinessPeriod</p></td>
					<td class="confluenceTd"><p>PERIOD_EXPED</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>destinationArea</strong>
						</p></td>
					<td class="confluenceTd"><p>DestinationArea</p></td>
					<td class="confluenceTd"><p>AREA_DEST</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>document</strong>
						</p></td>
					<td class="confluenceTd"><p>Document</p></td>
					<td class="confluenceTd"><p>DOCUMENTO</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>documentSecurityConfig</strong>
						</p></td>
					<td class="confluenceTd"><p>DocumentSecurityConfig</p></td>
					<td class="confluenceTd"><p>CONFIGUR_SEGUR_DOCTO</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>FactActivityCost</strong>
						</p></td>
					<td class="confluenceTd"><p>FactActivityCost</p></td>
					<td class="confluenceTd"><p>FACT_ACTIVITY_COST_CAP</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>FactFlowVolume</strong>
						</p></td>
					<td class="confluenceTd"><p>FactFlowVolume</p></td>
					<td class="confluenceTd"><p>FACT_FLOW_VOLUME_CAP</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>FactProcesCost</strong>
						</p></td>
					<td class="confluenceTd"><p>FactProcesCost</p></td>
					<td class="confluenceTd"><p>FACT_PROCES_COST_CAP</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>FactProcesVolume</strong>
						</p></td>
					<td class="confluenceTd"><p>FactProcesVolume</p></td>
					<td class="confluenceTd"><p>FACT_PROCES_VOLUME_CAP</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>FlowDim</strong>
						</p></td>
					<td class="confluenceTd"><p>FlowDim</p></td>
					<td class="confluenceTd"><p>FLOW_DIM_CAP</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>globalCalendar</strong>
						</p></td>
					<td class="confluenceTd"><p>GlobalCalendar</p></td>
					<td class="confluenceTd"><p>CALEND_GLOBAL</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>knowledge</strong>
						</p></td>
					<td class="confluenceTd"><p>Knowledge</p></td>
					<td class="confluenceTd"><p>CONOCIMIENTO</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>processAttachment</strong>
						</p></td>
					<td class="confluenceTd"><p>ProcessAttachment</p></td>
					<td class="confluenceTd"><p>ANEXO_PROCES</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>processDefinition</strong>
						</p></td>
					<td class="confluenceTd"><p>ProcessDefinition</p></td>
					<td class="confluenceTd"><p>DEF_PROCES</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>processDefinitionVersion</strong>
						</p></td>
					<td class="confluenceTd"><p>ProcessDefinitionVersion</p></td>
					<td class="confluenceTd"><p>VERS_DEF_PROCES</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>processHistory</strong>
						</p></td>
					<td class="confluenceTd"><p>ProcessHistory</p></td>
					<td class="confluenceTd"><p>HISTOR_PROCES</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>processState</strong>
						</p></td>
					<td class="confluenceTd"><p>ProcessState</p></td>
					<td class="confluenceTd"><p>ESTADO_PROCES</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>processTask</strong>
						</p></td>
					<td class="confluenceTd"><p>ProcessTask</p></td>
					<td class="confluenceTd"><p>TAR_PROCES</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>ProcesVersionDim</strong>
						</p></td>
					<td class="confluenceTd"><p>ProcesVersionDim</p></td>
					<td class="confluenceTd"><p>PROCES_VERSION_DIM_CAP</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>TimeDim</strong>
						</p></td>
					<td class="confluenceTd"><p>TimeDim</p></td>
					<td class="confluenceTd"><p>TIME_DIM_CAP</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>topic</strong>
						</p></td>
					<td class="confluenceTd"><p>Topic</p></td>
					<td class="confluenceTd"><p>ASUNTO</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>UserDim</strong>
						</p></td>
					<td class="confluenceTd"><p>UserDim</p></td>
					<td class="confluenceTd"><p>USER_DIM_CAP</p></td>
				</tr>
				<tr>
					<td class="confluenceTd"><p>
							<strong>workflowProcess</strong>
						</p></td>
					<td class="confluenceTd"><p>WorkflowProcess</p></td>
					<td class="confluenceTd"><p>PROCES_WORKFLOW</p></td>
				</tr>
			</tbody>
		</table>
	</div>
	<p>&#160;</p>
	<h3 id="DesenvolvimentodeRelatórios-ExemplodeUtilização">Ejemplo
		de Uso</h3>
	<div class="code panel pdl" style="border-width: 1px;">
		<div class="codeContent panelContent pdl">
			<pre class="theme: Confluence; brush: java; gutter: false"
				style="font-size: 12px;">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)");</pre>
		</div>
	</div>
	<p>&#160;</p>
	<div>
		<h1 id="DesenvolvimentodeRelatórios-AcessandodadosdeFormulários">Acceso
			a datos de Formularios</h1>
	</div>
	<h3 id="DesenvolvimentodeRelatórios-Importandobibliotecas">Importación
		de bibliotecas</h3>
	<p>A partir de la clase DatasetFactory se puede accede a los datos
		de formularios publicados en Fluig.</p>
	<p>Para llenar un informe a través de datos del fichero es
		necesario importar las siguientes bibliotecas:</p>
	<div class="code panel pdl" style="border-width: 1px;">
		<div class="codeContent panelContent pdl">
			<pre class="theme: Confluence; brush: java; gutter: false"
				style="font-size: 12px;">importPackage(Packages.com.datasul.technology.webdesk.dataset.service);
importPackage(Packages.com.datasul.technology.webdesk.dataset);
importPackage(Packages.com.datasul.technology.webdesk.search.controller);</pre>
		</div>
	</div>
	<p style="text-align: left;">&#160;</p>
	<h3 style="text-align: left;"
		id="DesenvolvimentodeRelatórios-Retornandodadosdoformulário">Devolución
		de datos del formulario</h3>
	<p>A través de la clase DatasetFactory es posible buscar datos de
		formularios, incluir filtros y ordenar. Ejemplo de uso:</p>
	<div class="code panel pdl" style="border-width: 1px;">
		<div class="codeContent panelContent pdl">
			<pre class="theme: Confluence; brush: java; gutter: false"
				style="font-size: 12px;">//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);</pre>
		</div>
	</div>
	<p>&#160;</p>
	<p>El ejemplo anterior invoca el método getDataSet pasando algunos
		argumentos adicionales como parámetros:</p>
	<ul>
		<li><strong>Nombre del Dataset:</strong> Nombre del servicio de
			datos del formulario;</li>
		<li><strong>Campos:</strong> Devuelve sólo los campos recibidos
			en el array informado. Si es null, devuelve todos los campos.</li>
		<li><strong>Constraints</strong>: Vector con las condiciones de
			búsqueda de Dataset. En cada condición de búsqueda (constraint) se
			debe informar el nombre del campo del formulario que se filtrará, el
			rango de valores inicial y final y el tipo de Constraint. Los tipos
			pueden ser:</li>
	</ul>
	<ul>
		<li style="list-style-type: none;"><ul>
				<li><strong>MUST:</strong> Indica que todos los registros del
					Dataset deben satisfacer esta condición.</li>
				<li><strong>SHOULD:</strong> Indica que los registros del
					Dataset pueden o no satisfacer esta condición. Este tipo es más
					común cuando se necesita que un mismo campo tenga valores A o B
					(donde cada uno será una constraint SHOULD).</li>
				<li><strong>MUST_NOT:</strong> indica que ninguno de los
					registros puede satisfacer la condición.</li>
				<li><strong>Orden:</strong> Vetor con la lista de campos que se
					utilizará para ordenar los registros en el Dataset.</li>
			</ul></li>
	</ul>
	<p>
		<span>La fuente del ejemplo citado anteriormente se puede bajar
			del siguiente link:</span>
	</p>
	<p>
		<span><a href="attachments/74646056/75236518.zip">Customer
				CardIndex.zip</a></span>
	</p>
	<p>
		<span
			style="color: rgb(0, 0, 0); font-size: 1.4em; font-weight: bold; line-height: normal;"><br /></span>
	</p>
	<p>
		<span
			style="color: rgb(0, 0, 0); font-size: 1.4em; font-weight: bold; line-height: normal;">Búsqueda
			de datos de Formulario con filtro por fecha</span>
	</p>
	<p>
		Para realizar consultas a través de Dataset con filtros del tipo
		Fecha, es necesario antes guardar el campo de la ficha en el formato <strong>aaaa/mm/dd</strong>
		(año/mes/día)&#160; para que se pueda realizar la búsqueda a través de
		Dataset.
	</p>
	<p>Ejemplo de consulta:</p>
	<div class="code panel pdl" style="border-width: 1px;">
		<div class="codeContent panelContent pdl">
			<pre class="theme: Confluence; brush: java; gutter: false"
				style="font-size: 12px;">//Instala las

Índice

Índice
outlinetrue
stylenone
exclude.*ndice

Objetivo

O objetivo deste guia é descrever o desenvolvimento, publicação e visualização de relatórios no Fluig, 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.

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
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:

...

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.

 

...

id2
labelPasso 2

 

  • 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

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

 

...

effectDuration0.5
idsamples
historyfalse
effectTypefade

...

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 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;

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:

...

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["paramSort"].value != "*"){
		sortingFields[0] = params["paramSort"].value;
	}	
	
	//Dataset
	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:

...

id3
labelFetch

...

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

Image Removed

Figura 13 - 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.

...

effectDuration0.5
idsamples
historyfalse
effectTypefade

...

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

Image Removed

Figura 14 – Novo Data Source

...

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

Image Removed

Figura 15 – Tipo Data Source

...

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

Image Removed

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

...

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.

...

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

Image Removed

Figura 18 – Configurando Data Set.

...

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

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}

Nota
titleAtenção

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

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

Image Removed

Figura 21 – Relatório em branco.

Na aba Pallets é possível incluir vários componentes de visualização e renderização de dados entre eles destacam-se:

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

...

effectDuration0.5
idsamples
historyfalse
effectTypefade

...

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.

Image Removed

Figura 22 – Componente Image.

...

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

Image Removed

Figura 23 - Componente Text.

...

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

 Image Removed

Figura 24 - Título do relatório.

...

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

Image Removed

Figura 25 - Configuração da Tabela.

...

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

Image Removed

Figura 26 - 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

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

...

effectDuration0.5
idsamples
historyfalse
effectTypefade

...

defaulttrue
id1
labelPasso1

 

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

Image Removed

Figura 28 – 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.

...

id2
labelPasso 2

 

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

 

Image Removed

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

...

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

Image Removed

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

...

id4
labelPasso 4

 

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

Image Removed

Figura 29 – 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 Fluig.

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.

Image Removed

Figura 32 – Parâmetros do relatório.

 

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

Image Removed

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

Opções do visualizador

A ferramenta de visualização de relatório do fluig possui várias funcionalidades:

  • 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 Fluig.
  • Navegação de páginas: permite a navegação entre as páginas do relatório.

Image Removed

Figura 34 – Funcionalidades do visualizador de relatórios.

JPA - Funções de Agregação

Funções de Agregação

O 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 Fluig.

Para popular um relatório através de dados de fichá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:

  • Nome do Dataset: Nome do serviço de dados do formulário;
  • Campos: Retorna apenas os campos recebidos no array informado. Caso null, retorna todos os campos.
  • Constraints: Vetor com as condições de busca do Dataset. Em cada condição de busca (constraint) deve-se informar o nome do campo do formulário que será filtrado, a faixa de valores inicial e final, e o tipo de Constraint. Os tipos podem ser:
    • 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.

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 no formato aaaa/mm/dd (ano/mês/dia)  para que seja possível realizar a busca via Dataset.

Exemplo de consulta:

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 oel resultado pelopor el nomenombre dodel 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.

...

</pre>
		</div>
	</div>

	<p>&#160;</p>
</div>