【问题标题】:What scripting frameworks exist for database-based reporting?基于数据库的报告存在哪些脚本框架?
【发布时间】:2012-07-26 16:43:43
【问题描述】:

我必须为我的工作运行大量基于关系数据库的报告。为了让我的生活更轻松,我编写了一些脚本和程序来运行报告(简单的 SQL 查询、复杂的超特定横切查询和完整的 JasperReports 任何风格的报告)、压缩和/或对其进行加密,然后通过 SMTP 将其发送给一个或多个收件人。

其中一些是用 Java 编写的,一些是用 PHP 编写的,还有一些是 bash shell 脚本。我想统一其中的很多内容,并添加一个报告描述格式,其中可以包含配置信息,例如哪个报告(或报告:有时我必须一次运行多个报告并将它们组合成一个“包”客户端)运行,报告的任何参数应该设置为(例如客户 ID),谁应该通过电子邮件/SFTP/等接收报告。

请注意,像 JasperReports 这样的工具只是解决方案的一部分:实际的报告生成部分。我对可用于编写整个过程的脚本并从 cron 作业运行的东西更感兴趣。

是否有任何产品(OSS 会很棒)来帮助我处理这种事情?或者,这种事情对于特定环境来说是否如此独特以至于需要我已经构建的那种定制工具?

【问题讨论】:

  • 不要试图变得困难,但为什么不只是使用 jasperreports 的简单 Java 应用程序,以及调用它们设置 cron 作业的简单脚本呢?除此之外,我相信 JasperServer 有能力设置自动报告,但对于你正在做的事情可能有点过头了。
  • @jschoen 这正是我现在所拥有的,但我发现我需要越来越多的功能,并且我想让非程序员更容易提交报告(例如,在 XML格式)。如果那里已经存在某些东西,我宁愿使用它,也不愿继续使用我被黑掉的实用程序和脚本系统。
  • 你看过 JasperServer 了吗?
  • 我正在检查 JasperServer,我知道它存在。我没有意识到它具有它的某些功能(计划报告、交付等)。我确信我需要一些超出它支持的附加功能,但这可能是一个很好的起点。我这周去看看。
  • 好的,我阅读了很多关于 JasperServer 的信息,安装并试用了它,但它仍然缺少一些我真正需要的功能:体面的压缩和报告加密(WinZIP 样式的 AES-256 或例如 PGP),将多个报告捆绑到单个通信中,跨不同客户群多次执行报告,SFTP 交付等。我现有的设置允许我方便地执行上述所有操作,除了两个批处理,SFTP 和 PGP .我希望找到可以支持此类事情的东西,而不是继续构建自定义解决方案。

标签: java database scripting jasper-reports reporting


【解决方案1】:

使用与您的 Java/J2EE 应用程序集成的BIRT 生成引人注目的报告。第二个选项是DataVision,类似于流行的水晶报表。

【讨论】:

  • 抱歉,我在创建报告时仍然没有任何问题:我想要的是包装、交付、调度等。
【解决方案2】:

这可能与您的想法有些不同,但您考虑过(或听说过)R 吗? R 是一种开源统计编程语言,具有许多功能,但具体到您的问题是;

  • 是开源的
  • 具有支持与 SQL 数据库(通用 ODBC,或特定 Oracle、MySQL、Postgres 等)交互的软件包
  • 可以对数据进行多种数据处理步骤
  • 可以生产 表格和图表
  • 可以通过多种方式生成文档 (LaTex, 降价,ODF)
  • 可以从命令行使用,(例如我 使用 make 生成文档)
  • 可以集成到网络服务器中 (RApache)
  • 可以运行 Java 代码 (RJava)

唯一的问题是这将是您自己推出的,没有提供您想要的功能的特定实现。

【讨论】:

  • 感谢您的反馈,但我自己创建报告没有问题:我正在寻找能够让我运行、打包和交付它们的东西。
【解决方案3】:

一些可以帮助您配置报告交付工作流的框架是。

  1. Apache Service Mix http://servicemix.apache.org/ 参见上一版本的架构图http://servicemix.apache.org/home.data/ServiceMix3.png

  2. Spring集成http://static.springsource.org/spring-integration/reference/htmlsingle/

两者都应该为您提供构建解耦架构的框架,以便报告压缩的部分和报告加密和报告生成的部分彼此不了解,但可以通过框架配置以在特定的情况下工作工作流程。

【讨论】:

  • ASM 非常面向 Web 服务,实际上不包含任何我可以使用的单一工具。 Spring 也不是很有帮助,因为它旨在用于集成、IOC 等。我当然可以构建自己的解耦架构:事实上,我已经在这样做了。我希望有比“bash”更有用的东西。
【解决方案4】:

也许你可以检查 Gradle http://www.gradle.org/。由于它基于 Groovy,您可以轻松发送邮件、打包存档和调用 JasperReports。

来自 Gradle 网站:

Gradle 是构建自动化的进化。 Gradle 可以自动化构建, 测试、发布、部署和更多的软件包或其他 生成的静态网站、生成的等项目类型 文档或其他任何东西。

Gradle 将 Ant 的强大功能和灵活性与依赖项结合在一起 Maven 的管理和约定成为一种更有效的方式 建造。 Gradle 由 Groovy DSL 提供支持并充满创新 提供了一种声明式的方式来描述各种构建 合理的默认值。 Gradle 正在迅速成为 许多开源项目、领先企业和 遗留的自动化挑战。

【讨论】:

    【解决方案5】:

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 2013-05-18
      • 2015-01-28
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多