JasperReports Server on Cloud Foundry

最近由于实验室工作的需要,有一些时间在做Cloud Foundry上对于著名的报表引擎JasperReports的支持。


关于官方的讲述可以参考地址:http://blog.cloudfoundry.com/2012/01/12/java-reporting-engine-is-now-available-on-cloud-foundry-via-jasperreports/


确切的说,JasperReports Server是作为一个app应用运行在Cloud Foundry上。既然作为一个app,那么必定会占据内存,CPU等资源,在这里需要说的是,JasperReports Server这个app占用的内存接近2GB,所以在做JasperReports Server部署的时候,请确保内存容量的充足。另外JasperReports Server作为一个报表引擎被加入Cloud Foundry,很大程度上是需要做到对Cloud Foundry本身service instance的报表生成,所以Cloud Foundry本身的service instance是JasperReports Server的数据源。


关于JasperReports Server这个app的源码下载,地址为:http://sourceforge.net/projects/cloudfoundry/?source=dlp


以下是具体使用JasperReports Server的流程。


1.部署应用程序 jasperreportsserver-ce-4.7-cloudfoundry


首先在该应用程序目录下执行vmc push命令,如图:

JasperReports Server on Cloud Foundry_第1张图片


如此简单即部署完JasperReports Server了,执行vmc list命令,可以看到:

JasperReports Server on Cloud Foundry_第2张图片


大家可以看到的是,关于JasperReports Server这个app已经在运行了,名为jrs-ce-47,另外还bind了一个service,名为jrs-repo-47,其实这个service是一个MySQL的服务实例。如果需要去看一下该数据库的schema的话,可以去cloud_controller的postgres数据库去找名为jrs-repo-47的service,从而从该service信息的credential中找到该数据库的数据库名(实际为一连串的字符,比如在我Cloud Foundry中名为:d2b83816869c043f4b429a2d7ef6f78c4)。知道数据库名之后就可以通过mysql的console进去查看该数据库的数据表以及表内数据。本此实验主要使用了该数据库中的数据表JIAccessEvent 。


2.使用iReport生成报表格式


如果你熟悉iReport和JasperReports Server的话,就会知道其实JasperReports Server是一个生成报表的工具,但是生成报表的前提有两个:一个是报表的模板,另一个是生成报表所需要的数据。而iReport正是用来做到第一个前提的。以下便是如何使用iReport创建一个最简单的jrxml文件。

第一步:打开iReport,创建一个数据库连接

JasperReports Server on Cloud Foundry_第3张图片

然后选择datasource的类型,这里就是JDBC连接:

JasperReports Server on Cloud Foundry_第4张图片

点击next,进入具体连接的配置环节:

JasperReports Server on Cloud Foundry_第5张图片

其中Name处可以随便取名,JDBC Driver处如图选择,URL处将DatabaseName改为你的数据库名字,比如说我的是d2b83816869c043f4b429a2d7ef6f78c4,然后Username和Passeord就填该数据库的用户和密码。一旦这些信息都填写完毕以后,可以点击Test按钮查看数据库是否可以访问,也就是查看配置信息是否可用,如果没有没有问题,则会显示:

JasperReports Server on Cloud Foundry_第6张图片

这样的话,第一步建立数据库连接的过程已经完成。

第二步:创建一个新的报表

JasperReports Server on Cloud Foundry_第7张图片

点击进去之后,就进入新建模式,如图:

JasperReports Server on Cloud Foundry_第8张图片

点击Blank A4,然后选择Launch Report Wizard,进入新建的具体选项选择:

JasperReports Server on Cloud Foundry_第9张图片

JasperReports Server on Cloud Foundry_第10张图片

JasperReports Server on Cloud Foundry_第11张图片

JasperReports Server on Cloud Foundry_第12张图片

JasperReports Server on Cloud Foundry_第13张图片

最后经过一系列的设计,就可以生成报表格式了,比如我的格式为:

JasperReports Server on Cloud Foundry_第14张图片

最后一定要知道最后的jrxml文件的文件目录地址,因为在JasperReport Server需要这个报表模板。


3.使用JasperReport Server生成最终的报表

由于已经在第一步完成了JasperReport Server这个app在Cloud Foundry上的部署,所以我们早就可以访问该URL了,比如我的是:jrs-ce-47.gatewayallen.com,如图:

JasperReports Server on Cloud Foundry_第15张图片

关于这里的用户名密码,可以使用jasperadmin,关于这个用户的权限等,可以去参看jaspersoft的官方文档。登录进去后,可以看到在root目录下就有一个service instance,也就是jrs-repo-47,或者说这个实例已经和JasperReport Server绑定完毕,或者也可以理解为关于JasperReport Server需要的数据源具备,现在我们需要做的就是如何将第二步中生成的jrxml文件引入进来。如图:

JasperReports Server on Cloud Foundry_第16张图片

右击CF文件夹,并一次找到JasperReport选项,并点击,得到以下效果:

JasperReports Server on Cloud Foundry_第17张图片

选择上传刚才生成的jrxml文件,并为该文件命名name和resource id,最后点击左下角的submit按钮。这样就可以在reposity中看到jrs-ca这个报表格式了,随后右击jrs-ca选择edit:

JasperReports Server on Cloud Foundry_第18张图片

进入之后,选择第三项DataSource,这样的话,我们就可以为该报表模板选择数据源了,如图:

JasperReports Server on Cloud Foundry_第19张图片

可以看到root下的数据源,也就是绑定的service instance终于可以用上了,点击select按钮以后,就选择了,然后还要点击左下角的submit按钮,最终提交:

JasperReports Server on Cloud Foundry_第20张图片

其实,从原理上来讲的话,JasperReport Server生成报表的两个前提我们都已经做好的,接下的就只要执行生成报表的最后一下了,如图:

JasperReports Server on Cloud Foundry_第21张图片

点击run,并且稍等片刻的话,一个最简单的报表就可以呈现在你面前了,如图:

JasperReports Server on Cloud Foundry_第22张图片

是不是和之前的模板很类似哈,到此为止,JasperReport Server所做的最基本工作,已经完成。


最后,希望这些对你的Cloud Foundry使用有所帮助。

如须交流,请关注新浪微博:莲子弗如清


你可能感兴趣的:(jasperreports)