web api y reportes

79 views
Skip to first unread message

Edgar Ramos

unread,
Oct 1, 2018, 10:01:45 AM10/1/18
to altnet-...@googlegroups.com
gente buenos dias, estoy usando crystal report con web api para diseniar los reportes que necesito, luego con web api los envio al cliente no hay drama en este punto.
Se nos ha planteado la posibilidad de eliminar crystal report, quisieramos ver que posibilidades tenemos para obtener algun software que me permita hacer lo mismo pero que sea free, cualquier comentario es bienvenido

muchas gracias


Mailtrack Remitente notificado con
Mailtrack 10/01/18, 8:58:58 AM

Juan José Montes de Oca Arbós

unread,
Oct 1, 2018, 10:05:55 AM10/1/18
to altnet-...@googlegroups.com
Hola Edgar, yo utilizo "Microsoft Rdlc Report Designer for Visual Studio" y va muy bien. Podés armar los reportes utilizando como origen de datos una base de datos (como en cristal report) o una colección de objetos (los cuales, te permiten que sigas manejando la logica de negocios dentro de .NET).

Hasta la versión VS2015 tengo entendido que venía incluido, en el VS2017 tenés que instalar este complemento: https://marketplace.visualstudio.com/items?itemName=ProBITools.MicrosoftRdlcReportDesignerforVisualStudio-18001

Saludos Y ÉXITOS!!

--

Juan José Montes de Oca Arbós.

===========================
Web personal: http://juanjose.montesdeocaarbos.com.ar/blog/


--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a altnet-hispan...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/altnet-hispano.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Miguel Eduardo Román Martínez

unread,
Oct 1, 2018, 10:22:24 PM10/1/18
to altnet-...@googlegroups.com
Saludos. Fijate que nosotros usamos JasperReports Server. Aunque está hecho en Java, se instala con un servidor aparte al que subís los reportes y usar una api rest que trae para generar los reportes y descargar el pdf. Algo que me gustó bastante es que la especificación de los reportes es xml, entonces agregarlo al Git y ver el historial del reporte resulta bien práctico. Cosa que no lográbamos con Crystal.

Saludos

--

Edgar Ramos

unread,
Oct 2, 2018, 9:32:31 AM10/2/18
to altnet-...@googlegroups.com
Miguel, para entender un poco mejor, desde web api accedes  JasperReports Server a su servicios rest para obtener el reporte?, sea este en pdf, excel, etc? 


Mailtrack Remitente notificado con
Mailtrack 10/02/18, 8:32:01 AM

Miguel Eduardo Román Martínez

unread,
Oct 2, 2018, 11:37:11 AM10/2/18
to altnet-...@googlegroups.com
Exacto, por ejemplo: todos los días a los usuarios hay que enviarles un reporte del cierre al final del día, entonces lo que hacemos es lo siguiente:

Hay una aplicación hecha en .Net que genera el cierre (poblando las tablas y haciendo los calculos necesarios), esta aplicación al terminar de hacer todo ese proceso de cierre llama a un endpoint del JasperReport, por ejemplo /rest_v2/reports/reports/cierre_diario.pdf?usuarioId=123&fecha=2018-01-01 este endpoint devuelve el archivo pdf que ya adjuntamos al correo.

Los reportes ya existen en el servidor y tienen quemado el query que deben ejecutar para generar el reporte con base en los parámetros enviados (y cuando hay que modificarlos utilizamos iReport Designer y subimos la nueva version del reporte al servidor), y podes majenar permisos especificos por reporte o por carpetas de reportes. y efectivamente si cambiamos la llamada al endpoint de .pdf a .xlsx descargaríamos el excel o .html descargas la versión html del reporte.

Saludos,

 
Miguel Román

Edgar Ramos

unread,
Oct 2, 2018, 11:52:18 AM10/2/18
to altnet-...@googlegroups.com
En cuanto a esto " Hay una aplicación hecha en .Net  "  esta app es wep api?, doy un poco mas de contexto de mi modelo de negocio.
Mi app es web api, tiene un cliente angular, desde el cliente los usuarios descargar reportes bajo demanda en pdf, excel y xml que son generados del lado del web api.
Viendo el esquema que comentas podria tener varias opciones
-Mi cliente angular ya no va al server (web api) por el reporte, va directo a jasperreport
-Mi server (web api) va jasper por el rpt y lo entrega al cliente angular, el cliente ni se entera que existe jasper



Mailtrack Remitente notificado con
Mailtrack 10/02/18, 10:42:48 AM

Miguel Eduardo Román Martínez

unread,
Oct 2, 2018, 12:39:45 PM10/2/18
to altnet-...@googlegroups.com
Comprendo, si tenemos unos escenarios similares, y nosotros preferimos que la app angular llama a un endpoint de la webapi y ese endpoint llama al jasper ya que por el esquema de autenticación que nosotros manejamos se nos complicaba mucho gestionar los permisos de por cada usuario en el jasper, entonces la app angular llama a /api/reportes/orden-de-compra?id=10 y es la web api la que se encarga de verificar si el usuario tiene permisos suficiente para ver esa orden de compra y de ser así utilizamos HttpClient para hacer un request a jasper /rest_v2/reports/reports/orden-de-compra.pdf?id=10 y el response de este Jasper lo enviamos al cliente (muy parecido a lo que haría un ReverseProxy).

Con este esquema abstraemos la solución de reportería y el usuario final ni enterado que los reportes son generados por un jasper y el jasper no tiene que ser publico, por que si no, el usuario podría cambiar el parámetro del id de la orden de compra y obtener una orden de compra a la que no tiene acceso.

Ahora con el ejemplo que mencioné en mi correo anterior, la "aplicación hecha en .Net" es un WindowsService que está escuchando una cola y cuando llega un mensaje de generar cierre (que realmente llega un mensaje de ese tipo cada 24 horas) hace todo su trabajo, el detalle en esta última implementación es que es un reporte y un correo que se debe enviar todos los días entre semana sin la intervención del usuario. :)

Saludos,

Edgar Ramos

unread,
Oct 2, 2018, 3:15:13 PM10/2/18
to altnet-...@googlegroups.com
Gracias Miguel y a todos, voy a probar sus recomendaciones y les comento cualquier inquietud


Mailtrack Remitente notificado con
Mailtrack 10/02/18, 2:14:35 PM

Kiquenet

unread,
Oct 2, 2018, 4:19:09 PM10/2/18
to AltNet-Hispano

Preguntón Cojonero Cabrón

unread,
Oct 2, 2018, 5:14:05 PM10/2/18
to AltNet-Hispano
Gracias por las explicaciones.

Vamos un paso más allá. Os pregunto vuestras experiencias "real-world" con esta arquitectura, a nivel profesional, sean casos prácticos, código infraestructure, buenas prácticas, etcéera?

De JasperReports Server, un getting started paso a paso para instalarlo y configurarlo fino en Windows Server 2012 R2

De iReport Designer, una guía para crear reports en XML con las consultas a BBDD, quizá un ejemplo real world.

Seguridad para el WebAPI /api/reporte, que llama cliente Angular

WindowsService y Colas (qué tipo MSMQ, otra ...) ? Mensaje al cierre al la cola


Vamos, una  mentoría aka Everything You Need to Know About  +  Unraveling the Mysteries of +  Demystifying  de Log Parser.

No tanto como Sharing our Experience  a nivel Nick Craver - StackOverflow
https://nickcraver.com/blog/2016/02/03/stack-overflow-a-technical-deconstruction/
By sharing what we do (and I mean all of us), we better our world. Everyone that works at Stack shares at least one passion: improving life for all developers. Sharing how we do things is one of the best and biggest ways we can do that. It helps you. It helps me. It helps all of us.


REAL WORLD samples ? Demos are cool, but it is time to talk about the real world!

Edgar Ramos

unread,
Oct 2, 2018, 5:27:00 PM10/2/18
to altnet-...@googlegroups.com
Con respecto a esto:  "Seguridad para el WebAPI /api/reporte, que llama cliente Angular", siguemos el estandar oAuth 2.0, 
hemos creado un pequenio sistema de autenticacion y autorizacion, nada del otro mundo, muchas cosas por mejorar por supuesto 
pero este momento nos va bien. 

Cada ruta definida en el controller lleva esto

[RoutePrefix("api/Parameters/Airline")], para llegar aca  un usuario debió previamente estar autenticado, y en cada action algo como esto

[AuthorizeOperation("/Parameters/Airline", "/View")], 
[AuthorizeOperation("/Parameters/Airline", "/New")]

y aqui es donde se verifica si el rol al que el usuario pertenece tiene permiso sobre este recurso.

Siempre se puede mejorar, pero por el momento funciona bien.

Igual cualquier sugerencia es bienvenida.






Mailtrack Remitente notificado con
Mailtrack 10/02/18, 4:26:08 PM

Preguntón Cojonero Cabrón

unread,
Oct 3, 2018, 4:23:21 PM10/3/18
to AltNet-Hispano
un pequenio sistema de autenticacion y autorizacion? Implementación de ejemplo?
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a altnet-hispano+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a altnet-hispano@googlegroups.com.

Carlos Admirador

unread,
Apr 12, 2022, 5:22:06 PM4/12/22
to AltNet-Hispano
Sistema de reportes con web api ? con consultas pesadas ?
Reply all
Reply to author
Forward
0 new messages