使用REST API生成JasperServer报告时传入内容

Max*_*axH 10 rest jasper-reports jasperserver

我正在开发一个旨在用JasperReports Server替换当前PDF生成器的项目.计划是使用REST/HTTP API实现系统之间的高级抽象.

最理想的是,我们不希望让JasperReports Server从数据库中提取数据,因为这会绕过调用应用程序架构中的现有日志记录和授权.相反,我们首先要在调用应用程序中提取内容,然后将该内容传递给JasperReports Server.

我们已经做了相当多的调查,缺乏相关结果表明这不是您通常使用JasperReports Server的方式.我们发现的教程中的输入参数通常是标量值(整数,布尔值或字符串),而不是复杂的结构或对象.此外,似乎每个样本或多或少都假设您希望让JasperReports Server连接到数据库.

如果可以传递复杂的结构(比如一组地图,其中一些地图元素是数组或地图本身),那么这样做的最佳做法是什么?我不知道如何在请求体中格式化这样的结构.SOAP API更适合吗?

如果您不应该如何设计JasperReports服务器解决方案,那么哪种替代产品/解决方案更合适?

提前感谢任何输入.

Max*_*axH 8

经过几个小时的研究,我想我已经准备好回答我自己的问题了.

JasperReports Server(下面的"JRS")基本上是为自己获取数据而设计的.尽管可以强制向JRS提供数据,但我决定不这样做.

不让JRS获取数据本身的一个最明显的缺点是,不再可能从JRS Web界面生成报告.如果客户端应用程序负责以预定义格式提供数据,则与其他系统的集成也变得不可能或困难.

在我正在开发的项目中,我们决定构建一个基于Remote XML DataSource的自定义JRS DataSource,它调用客户端应用程序的XML API.换句话说,客户端应用程序从JRS请求报告,然后JRS从客户端应用程序请求它的数据.我们必须扩展XML API以满足我们的所有报告需求,但在我看来这是一件好事.良好的API覆盖将在未来派上用场.

我希望这些想法可以帮助有类似问题的人.