我们即将使用Jasper Server Reports版本3.7.0 CE开始开发大量报告。
考虑到报表单元的结构是在数据库中通过iReport
还是通过Web前端进行管理,有没有人对如何最好地管理版本控制有任何建议?
实际上,您可以使用js-import / js-export脚本导入/导出到目录结构,但是您无法使用iReport
直接编辑这些文件。
有没有人有任何指示?
答案 0 :(得分:8)
这是有问题的。我已经建立了一个subversion存储库,允许对标准报表的交付进行版本控制,但这是一个真正的痛苦,因为jasper并没有让它变得有点容易。
我创建了一个带有程序集描述符的maven项目,以便“src / main / xml / resources / Reports,adhoc,Domains等”可以打包到一个压缩到我们的maven存储库的zip。
最大的问题是你不能仅仅通过修改XML文件来开发adhoc和输入控件。开发人员必须将源代码管理中的内容导入到工作的jasper服务器中,修改报告或添加新的报告(确保他的组织和数据源配置完毕后),并且一旦他对报告的工作满意,就导出资源到目录或zip文件,在检查更改之前,手动将导出文件中的所有引用从数据源和组织特定资源位置修改回“generic”。
导入jasper时,必须以相反的方式完成相同的过程。通用路径和组织值必须转换为开发人员的组织,以便可以轻松导入/更新,并且可以在签入之前证明完整的“往返”工作正常。
为了使export / subversion checkin更容易,我创建了一个ant构建文件,它存在于maven项目的根目录中。构建提示(或将读取属性文件)以确定导出的zip位置,即导出的树的组织ID。然后它从jasper打开导出的zip文件,将其展开,对文件执行文本替换,将“createdDate”和“updatedDate”元素重置为标准(以便开发人员最终不会检入实际没有更改的文件)因为jasper不保留日期值),然后将文件复制到subversion树中。
对于导入过程(从subversion树到jasper),我们有一个脚本,它将组织ID作为输入,然后将版本化的xml文件修改为适当的值,以便可以轻松地将整个树导入/更新到他们的组织。
需要这种复杂程度的原因是允许我们在多租户环境中创建相同的标准报告,而jasper的部署报告的概念绝对是奇怪的。如果您打算这样做,我不确定是否有可能使这个过程更加困难。
答案 1 :(得分:4)
如果我在你的位置,我会建立这样的过程: