SIU-Araí: Reportes

SIU-Araí: Reportes

  • Documentación
  • Cómo obtener

›Publicando

Comenzando

  • Introducción
  • Instalación Rápida

Conceptos

  • Arquitectura

Configuración

  • Configuración

Reportes

  • Diseñando Reportes
  • Backends

    • Jasper

    Publicando

    • Publicando
    • Publicando AIO
  • Generando

API

    Endpoints disponibles

    • /carpetas
    • /archivos
    • /imagenes
    • /reportes

Changelog

  • changelog

Publicando un Reporte

Dado que los reportes ya no viven en nuestra instalacion particular sino que se encuentran en un servidor, es necesario publicarlos para dejarlos disponibles a todos quienes quieran hacer uso de ellos.

Este proceso de publicación en algunos casos involucra la transformación de esos recursos, como asi tambien que los mismos esten ubicados correctamente y con todos sus componentes accesibles.

En general los pasos para publicar un reporte serian:

  • Crear los recursos para los assets involucrados
  • Crear los recursos para las imagenes involucradas
  • Crear el recurso para el reporte

Cada uno de esos pasos va a devolver identificadores para los recursos que acabamos de crear, por lo que es necesario guardarlos ya que los mismos seran necesarios ya sea para especificar en otros recursos o para poder ejecutar un reporte.

Assets

Los assets son archivos que seran utilizados por el reporte, los mismos pueden ser hojas de estilo, documentos html, archivos de datos, etc.

En particular, los subreportes se convierten en un asset que sera consumido por el reporte general de forma tal que los mismos se deben suministrar via este mecanismo, inclusive el mismo fuente del reporte se puede proporcionar asi.

Suponiendo que tenemos un archivo que deseamos utilizar para nuestros reportes, el contenido a enviar seria:

{
  "proyecto": "Imhotep",
  "id": "Pustulas",
  "uri": "/reportes/Imhotep/fuenteReportes/fuenteHechizos.jrxml",
  "archivo": {
      "uri": "/reportes/Imhotep/fuenteReportes/fuenteHechizos.jrxml",
      "tipo": "jrxml",
        "data": base64encode(file_get_contents("/path/to/archivo.jrxml")),
        "temporal": 0
  }
}

Luego nuestro pedido será similar a:

 curl -X POST "http://siu:81/reportes/v2/archivos" -H  "accept: application/json" -H  "Content-Type: application/json" -d "@./docs/ejemplos/jasper/addFile/descriptor.json"

Si todo funciona correctamente, se nos devolverá el identificador del archivo en un JSON

{
    "uri": "/reportes/Imhotep/fuenteReportes/fuenteHechizos.jrxml"
}

Imagenes

Las imagenes son un asset tambien, pero a diferencia de los archivos no se especifica su tipo durante la creacion sino que simplemente se indica el contenido y su identificador.

El ejemplo mas comun para un reporte seria incrustar el logo de la institucion o del sistema, el cual podriamos agregar de la siguiente forma:

{
  "proyecto": "Imhotep",
  "id": "logo.jpg",
  "uri": "/reportes/Imhotep/imagenes/logo.jpg",
  "imagen" :  {
    "uri": "/reportes/Imhotep/imagenes/logo.jpg",
    "data": base64encode(file_get_contents("/path/to/logo.png"))
  }
}

Luego nuestro pedido será similar a:

 curl -X POST "http://siu:81/reportes/v2/imagenes" -H  "accept: application/json" -H  "Content-Type: application/json" -d "@./docs/ejemplos/jasper/addImg/descriptor.json"

Esto a su vez si funciona correctamente, se nos devolverá el identificador del archivo en un JSON

{
    "uri": "/reportes/Imhotep/imagenes/logo.jpg"
}

Publicando Reportes

Suponiendo que ya tenemos nuestros assets cargados y nuestras imagenes tambien, lo siguiente es armar la estructura del reporte de la forma correcta. Esto significa que debemos asegurarnos que los recursos que utiliza estan bien direccionados en su definicion, tal como mencionamos aquí.

Lo que queda entonces luego es publicarlo, para ello presentaremos la siguiente estructura al recurso reportes:

{
  "proyecto": "Imhotep",
  "id": "Hechizados",
  "uri": "/reportes/Imhotep/Hechizos/Hechizados",
  "source" : {
    "uri": "/reportes/Imhotep/Hechizos/flsafhsafs",
    "data": base64encode(file_get_contents("/path/to/hechizos.jrxml"))
  }
}

Los campos existentes en source pueden aparecer simultaneamente o unicamente data, en este ultimo caso se generara un nombre y uri automaticamente para el contenido enviado, de otra forma se utilizara el provisto por uri.

"source" : {
    "data": base64encode(file_get_contents("/path/to/hechizos.jrxml"))
  }

Nuestra invocación entonces quedaria de la siguiente forma:

 curl -X POST "http://siu:81/reportes/v2/reportes" -H  "accept: application/json" -H  "Content-Type: application/json" -d "@./docs/ejemplos/jasper/addReport/item_list/descriptor.json"

En caso de ser correctos los datos proporcionados, esto es.. que el jrxml tenga todos sus recursos bien direccionados, etc.. se nos devolvera una estructura JSON con el siguiente contenido.

{
    "uri": "/reportes/Imhotep/Hechizos/Hechizados"
}

Este será el identificador a utilizar al momento de ejecutar el reporte y proporcionarle los datos, por lo cual es necesario que el mismo se guarde en el sistema de forma de poder realizar el mapeo entre el codigo y lo que necesita el servidor de reportes.

← JasperPublicando AIO →
SIU-Araí: Reportes
Documentación
Overview del Sistema
Comunidad
ForoHub SIUSIU
Más
Cómo obtener
Copyright © 2025 SIU