SIGESA-PPI: Ejemplo de Aplicación de Estándar Reportes PPI v1.0.0

  • El siguiente documento establece un ejempo de la aplicación del estándar de diseño de reportes PPI en su versión 1.0.0, para la creación y publicación de reportes del el Área de Planificación Institucional (PPI) de la Universidad Nacional.

Información

  • Al momento de crear esta guía se utilizará la herramienta Jasper Studio en su versión 6.20.0
  • https://community.jaspersoft.com/project/jaspersoft-studio
  • Además como nota adicional el Jasper Studio se encuentra configurado con la compatibilidad de JasperReports versión 5.5.2, versión soportada por SIGESA.

Creación de reporte

  • Para crear un reporte debemos ingresar a:
  • Menú
    • File
      • New
        • Jasper Report
  • Esta acción nos abre una ventana donde debemos seleccionar la plantilla «Blank Letter Landscape«
  • A contnuación nos indica que debemos establecer el nombre del reporte y el directorio donde será almacenado el reporte.
  • Nombre del Reporte:
    • Para establecer el nombre del reporte debemos seguir la siguiente nomenclatura, obtenida del estándar.
    • Para este ejemplo estaremos creando un reporte de » Grado de Avance de las Prioridades/Objetivos Estratégicos»
    • Por tanto su nombre de reporte debería ser:
R-PPI-PPE-AVANCEPRIORIDADOBJETIVOESTRATEGICO.jrxml
  • A continuación se detalla el segmento del estándar donde se establece el la nomenclatura de los nombres de reportes:

ADICIONAL-ESTANDAR:

1. Nombre del reporte:

  • Para establecer el nombre de un reporte, se debe seguir la siguiente nomenclatura.
  • Y que como primera regla, siempre se debe establecer en letras mayúsculas.
R-PPI-DIMINUTIVO_MODULO-SUB-NOMBRE_REPORTE-VARIABLE.jrxml
1.1. Descripción de nomenclatura.
  • R: Establece que el documento es un «Reporte».
    • Ejemplo: R-.
  • PPI: Establece que pertenece al «Área de Planificación Institucional».
    • Ejemplo: R-PPI.
  • DIMINUTIVO_MODULO: representa las sigas del diminutivo del módulo de PPI, al que pertenece el reporte, a saber:
    • PPE: Planificación Estratégica
    • PPO: Planificación Operativa
    • IIP: Información e Indicadores de la Planificación
    • MCG: Mejoramiento Contínuo de la Gestión
    • Ejemplo:
      • R-PPI-MCG-
  • SUB:
    • Opcional.
    • Cuando lo se esta creando un «subreporte», debe representarse con estas siglas.
    • Ejemplo:
      • R-PPI-MCG-SUB-
  • NOMBRE_REPORTE:
    • Representa el nombre de la información que esta siendo obtenida en el reporte.
      • Ejemplo: si el reporte obtiene información de los planes operativos, su nombre debería ser: «R-PPI-PPO-PLANOPERATIVO»
    • Se debe trabajar de ser posible con palabras en singular.
      • Ejemplo: si la información del reporte es sobre evaluaciones operativas, su nombre debería ser: «R-PPI-PPO-EVALUACIONOPERATIVA»
    • Si el nombre del reporte esta compuesto de varias palabras, estas deben estar concatenadas.
      • Ejemplo: si la información del reporte es sobre el «Historial de Modificaciones POA», su nombre dedería ser: «R-PPI-PPO-HISTORIALMODIFICACIONPOA»
  • VARIABLE:
    • Si es reporte que se esta diseñando es un reporte de tipo «Tamaño Variable», se debe representar con la palabra «VARIABLE».
    • Normalmente esta condición solo se aplica para subreportes.
      • EJEMPLO: si estamos creando un subreporte variable que obtiene el nombre del «Periodo Anual», su nombre debería ser: «R-PPI-PPO-SUB-PERIODOANUALNOMBRE-VARIABLE».

Continuamos

  • Directorio:
    • El directorio defecto donde se almacenan y compilan los reportes en Jasper Studio, para Linux es el directorio «Home» del usuario, dentro de la carpeta «JaspersoftWorkspace/MyReports».
    • Ejemplo:
/home/usuario/JaspersoftWorkspace/MyReports/
  • Vamos a seleccionar este directorio
  • Ahora nos solicita seleccionar el «Data Adapter», para el cual seleccionamos la opción necesaria.
  • Esto nos lista los usuarios disponibles y las tablas a las cuales tenemos acceso.
  • Podríamos seleccionar las tablas y columnas necesarias para realizar la consulta o agregar la consulta en el siguiente cuadro
  • Sin embargo vamos a trabajar la consulta posteriormente
  • Por tanto podemos darle finaliar al asistente.
  • Nos indica una ventana de advertencia que no pudo descubrir los campos necesarios, le damos OK
  • Esto nos crea el reporte

Configuración del Reporte

  • En este momento tenemos 2 posibilidades se comenzar a trabajar con el reporte

Opción 1: Sustitución de código

  • La primera es copiar el siguiente código:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.20.0.final using JasperReports Library version 5.5.2  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="R-PPI-MCG-SEGUIMIENTOACTIVIDADRIESGONOVINCULADA" pageWidth="792" pageHeight="612" orientation="Landscape" whenNoDataType="NoDataSection" columnWidth="752" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="d2f576f9-e4ac-445d-8a1d-ddcf62b47751">
	<property name="com.jaspersoft.studio.data.sql.tables" value=""/>
	<property name="com.jaspersoft.studio.data.defaultdataadapter" value="ORACLE-UNA"/>
	<property name="com.jaspersoft.studio.report.description" value="Reporte de XXX"/>
	<property name="com.jaspersoft.studio.unit." value="pixel"/>
	<property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/>
	<parameter name="SUBREPORT_DIR" class="java.lang.String">
		<defaultValueExpression><![CDATA[""]]></defaultValueExpression>
	</parameter>
	<parameter name="etapaPlan" class="java.lang.Long"/>
	<parameter name="unidadEjecutora" class="java.lang.Long"/>
	<queryString language="SQL">
		<![CDATA[]]>
	</queryString>
	<field name="PERIODO_ANUAL" class="java.math.BigDecimal">
		<property name="com.jaspersoft.studio.field.name" value="PERIODO_ANUAL"/>
		<property name="com.jaspersoft.studio.field.label" value="PERIODO_ANUAL"/>
	</field>
	<variable name="etapaPlan_nombre" class="java.lang.String" calculation="System"/>
	<variable name="periodoAnual_nombre" class="java.lang.String" resetType="Page" calculation="System"/>
	<variable name="unidadEjecutora_codigo_nombre" class="java.lang.String" calculation="System"/>
	<background>
		<band splitType="Stretch"/>
	</background>
	<title>
		<band height="60" splitType="Stretch">
			<property name="com.jaspersoft.studio.unit.height" value="px"/>
			<staticText>
				<reportElement x="0" y="0" width="752" height="15" uuid="3c33a882-b415-4aa1-9b8a-1817f08ba095">
					<property name="com.jaspersoft.studio.unit.width" value="px"/>
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[Universidad Nacional]]></text>
			</staticText>
			<staticText>
				<reportElement x="0" y="15" width="752" height="15" uuid="c612af41-d8a3-4001-9de3-9e071da27f98">
					<property name="com.jaspersoft.studio.unit.width" value="px"/>
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[Área de Planificación]]></text>
			</staticText>
			<staticText>
				<reportElement x="0" y="30" width="752" height="15" uuid="bf8be4f5-1ced-47ec-8d8c-8bca975ef901">
					<property name="com.jaspersoft.studio.unit.width" value="px"/>
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[Título XXX]]></text>
			</staticText>
			<subreport>
				<reportElement positionType="Float" x="0" y="45" width="752" height="15" uuid="1d4a2388-d798-49fa-9c36-0e0f6cd9a7d3"/>
				<subreportParameter name="etapaPlan">
					<subreportParameterExpression><![CDATA[$P{etapaPlan}.longValue()]]></subreportParameterExpression>
				</subreportParameter>
				<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
				<returnValue subreportVariable="etapaPlan_nombre" toVariable="etapaPlan_nombre"/>
				<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "R-PPI-PPO-SUB-ETAPAPLANNOMBRE-VARIABLE.jasper"]]></subreportExpression>
			</subreport>
			<subreport>
				<reportElement x="0" y="45" width="752" height="15" uuid="c8d3a520-dc20-416e-91f3-0c087d1c4ca5"/>
				<subreportParameter name="periodoAnual">
					<subreportParameterExpression><![CDATA[$F{PERIODO_ANUAL}.longValue()]]></subreportParameterExpression>
				</subreportParameter>
				<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
				<returnValue subreportVariable="periodoAnual_nombre" toVariable="periodoAnual_nombre"/>
				<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "R-PPI-PPO-SUB-PERIODOANUALNOMBRE-VARIABLE.jasper"]]></subreportExpression>
			</subreport>
			<textField evaluationTime="Band" pattern="">
				<reportElement x="0" y="45" width="752" height="15" uuid="d98ac397-e401-49c1-b166-7a89362f302b"/>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="10" isBold="true" isPdfEmbedded="false"/>
				</textElement>
				<textFieldExpression><![CDATA["Etapa: " +$V{etapaPlan_nombre} + " " + $V{periodoAnual_nombre}]]></textFieldExpression>
			</textField>
		</band>
	</title>
	<pageHeader>
		<band height="45">
			<property name="com.jaspersoft.studio.unit.height" value="px"/>
			<printWhenExpression><![CDATA[$V{PAGE_NUMBER}.equals(1)]]></printWhenExpression>
			<textField pattern="dd/MM/yyyy">
				<reportElement x="0" y="0" width="140" height="15" uuid="6642d4f9-2708-4a64-a826-074b4e93d139"/>
				<textElement textAlignment="Left" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="8" isBold="false" isItalic="false"/>
				</textElement>
				<textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="140" y="0" width="576" height="15" uuid="22fe0526-a008-43cf-a0b7-b467094f7a4a"/>
				<textElement textAlignment="Right" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="8" isBold="false"/>
				</textElement>
				<textFieldExpression><![CDATA["Página "+$V{PAGE_NUMBER}+" de"]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Report">
				<reportElement x="716" y="0" width="36" height="15" uuid="a89560aa-1613-4487-9db6-888cef96f1ed"/>
				<textElement textAlignment="Left" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="8" isBold="false"/>
				</textElement>
				<textFieldExpression><![CDATA[" "+$V{PAGE_NUMBER}]]></textFieldExpression>
			</textField>
			<staticText>
				<reportElement x="0" y="15" width="140" height="15" uuid="baa1f198-cc96-4e99-970f-49c0285d5ac6"/>
				<textElement verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="7" isBold="true"/>
				</textElement>
				<text><![CDATA[RESPONSABLE:]]></text>
			</staticText>
			<subreport>
				<reportElement x="140" y="15" width="612" height="15" uuid="c7219710-ed23-48fc-aafa-e1c1299a19c4"/>
				<subreportParameter name="unidadEjecutora">
					<subreportParameterExpression><![CDATA[$P{unidadEjecutora}.longValue()]]></subreportParameterExpression>
				</subreportParameter>
				<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
				<returnValue subreportVariable="unidadEjecutora_codigo_nombre" toVariable="unidadEjecutora_codigo_nombre"/>
				<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "R-PPI-PPO-SUB-UNIDADEJECUTORA-VARIABLE.jasper"]]></subreportExpression>
			</subreport>
			<textField evaluationTime="Band" pattern="">
				<reportElement x="140" y="15" width="612" height="15" uuid="402ba741-2090-4247-8304-613aa6c83ecd"/>
				<textElement verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="8" isBold="false" isPdfEmbedded="false"/>
				</textElement>
				<textFieldExpression><![CDATA[$V{unidadEjecutora_codigo_nombre}]]></textFieldExpression>
			</textField>
		</band>
	</pageHeader>
	<detail>
		<band height="15" splitType="Stretch">
			<property name="com.jaspersoft.studio.unit.height" value="px"/>
		</band>
	</detail>
	<noData>
		<band height="15">
			<property name="com.jaspersoft.studio.unit.height" value="px"/>
			<staticText>
				<reportElement x="0" y="0" width="752" height="15" uuid="6a767177-3730-44d7-a985-6b0b59c0d930">
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<textElement textAlignment="Center">
					<font fontName="DejaVu Sans" size="8" isBold="true"/>
				</textElement>
				<text><![CDATA[No se encontraron registros según los parámetros especificados]]></text>
			</staticText>
		</band>
	</noData>
</jasperReport>
  • Y modificar el «source» del reporte que hemos creado
  • Nos pasamos a «desing»
  • Y como vemos nos abra creado el formato del estándar
  • El cual esta compuesto de:
  • Título del reporte

  • Del cual solo tendríamos que modificar el título del reporte
  • Lo modificamos
  • Reporte de Grado de Avance de las Prioridades / Objetivos Estratégicos
  • Y además se debe modificar el título y descripicón del reporte en la siguiente sección:
    • R-PPI-MCG-AVANCEPRIORIDADOBJETIVO
    • Reporte de Grado de Avance de las Prioridades / Objetivos Estratégicos
  • Y como parte del estándar de PPI para reportes dentro del título debe existir el nombre de la EtapaPlan y el año del periodo
  • Los cuales se encuentran funcionando gracias a que la etapaPlan se encuentra definida como una parámetro
  • Y se esta utilizando el subreporte de $P{SUBREPORT_DIR} + «R-PPI-PPO-SUB-ETAPAPLANNOMBRE-VARIABLE.jasper»
  • El cual le esta pasando el parámetro del reporte principal «etapaPlan» al subreporte
  • Y que existe una variable dentro de nuestro reporte llamada «etapaPlan_nombre», que va recibir el nombre de la etapa del subreporte variable
  • Y su configuración
  • Y para obtener el año del periodo anual
  • Se esta utilizando el subreporte $P{SUBREPORT_DIR} + «R-PPI-PPO-SUB-PERIODOANUALNOMBRE-VARIABLE.jasper»
  • Sin embargo con este ocurre una situación si al reporte se le solicita como parametro el periodoAnual este subreporte puede utilizar este para la configuración del envió del Id del periodo al subreporte
  • Pero si no se solicita como parámetro se puede agregar como un campo de la consulta y ser configurado este como parámetro para el subreporte
  • Para cualquiera de los casos simplemente se debe configurar de donde se va a obtener el periodo anual ya sea del parámetro o campo y configurarlo para ser enviado al subreporte, para este ejemplo esta definido como un campo

  • Y finalmente se encuentra disponible la sección de «Page Header» con la configuración basíca de un subreporte de unidad ejecutora, la cual debe ser sustituida por los parámetros correctos del reporte

Opción 2: Creación del reporte desde cero según estándar

  • Si opta por esta opción se va a explicar el paso a paso de la creación del reporte según el estándar del reportes PPI.
  • Para esto vamos a apartir que se creo un reporte vació utilizando la plantilla «Blank Letter Landscape»

1. Configuración de reporte

  • En esta seción se explica los pasos necesarios para la configuración del reporte.

1.1. nombre y descripción del reporte

  • Para establecer el nombre y descripción del reporte, lo primero que se debe hacer es marcar el nombre del reporte.
  • Esto nos abre las propiedades del reporte donde le podemos establecer su nombre y descripción
  • De modo de ejemplo se utilizará la siguiente información
    • Nombre: R-PPI-MCG-AVANCEPRIORIDADOBJETIVO.
    • Descripción: Reporte de Grado de Avance de las Prioridades / Objetivos Estratégicos.