0

我知道Guard Gem可以继续监听文件的更改并根据更改触发脚本(尽管我从未使用过它)。.

但现在这并不是我所需要的。.我需要一个类似的工具来持续监听数据库中特定表的变化。.如果有任何变化,我需要触发一个脚本。.

额外细节

我正在使用一个名为 Jasper Server 的工具,它基本上是一个报告引擎。. 它作为 webapp 在 tomcat 之上运行。.

在设计新报表时通过用户界面添加大部分功能非常方便。.但是,当我进行更改时,更改本地存储在名为 jasperserver 的表中(我目前使用 PostgreSQL,可能它与其他数据库非常相似)。

所以每当我需要复印我的报告时,我都必须这样做

$JASPER_HOME/buildomatic/js-export.sh --uris Path/In/JasperServer --output-dir Path/In/FileSystem

这将拍摄 jasperserver 表的图片并创建 Report 文件夹。.可以部署在其他机器上。.

但是我发现这是一个手动步骤,我觉得必须有某种方法来自动化这个过程。.所以我想知道是否有任何工具来保护数据库而不是普通文件。.

有什么建议么 。。请回复 。.

4

1 回答 1

0

导出脚本不会获取数据库表的图像,而是在 JasperReports Server 中创建报表配置的描述符。如果您查看 --output-dir,您会发现描述报告配置的 XML 文件、包含所有内容的数据文件、输入控件的描述、数据源等。这些配置被导出为独立于数据库的 XML 格式,并涉及大约 20 个表JasperReports 服务器数据库。因此,监视特定表将无法满足您的要求,例如

  • 如果您查看JIResource表格 - 所有新的存储库元素(例如文件夹、临时文件、其他资源)都会触发监视器。JIResource保存导出所需的 URI。
  • 但是,如果您监视JIReportUnit表格,您会看到所有新的报告单元,然后您需要执行一些查询来检索导出所需的有关 URI 的信息。

一般来说,直接使用应用程序的数据库是不好的做法,最好是利用应用程序附带的 API。

因此,据我了解,有两种选择:

  • 基于工作流的解决方案 - 即,当上传新报告时,手动启动导出(最新版本支持通过前端导出,这可能会简化您的用例)。

  • 基于服务器产品定制的解决方案,您可以在其中扩展保存报告工作流程以在保存期间执行其他操作。

于 2013-01-24T10:54:38.477 回答