在这个版本(V3,CodeName:ERIS)的最后时间,我逐步将设计的报表系统的设计思路慢慢的发布到我这个Blog上,其实这就是一个总结的过程。在这个时候V3的功能按照蓝图基本已经完成了,开始进入V4的正式开发,就在这个拐点的时候,我提出了一个问题问自己:还有必要更加强化报表系统么,难道别的工具就如此不堪?
带着这个问题,我再次的对现有的开源和商业的报表系统进行了一番回顾,以便再次给我的报表系统做一个立足点。本章就这些问题进行一番简单的讨论,但愿我能再次肯定自己的成绩不是白做,而且可以按计划的开发V4的勇士版本(V4的CodeName已经确定为 Aeneas)。
我想我还是明确我需要的报表是怎么样的:
- 简单的,无侵入的部署,业界所谓的轻量级,没有过多的附加Java库,没有过多的JS依赖。可以作为一个应用,也可以作为一个单独的模块存在。
- 自适应的部署,支持pure的JSP部署,支持Servlet和TagLib部署,可以兼容JSF等等深具强奸性质的框架。
- 简单的报表支持,数据集---->HTML------>Export----->Chart的支持足矣。
- 支持参数化报表查询。
- 快速的报表开发,不需要了解很深的技术细节就可以开发报表,最好能够做到网页上所见即所得。
- 多种呈现,包括图形和表格的联动呈现。
以此为标准,我检查了Eclipse Birt,润乾,OpenReport,JasperReport/IReport,JFreeReport,JavaEye Reporting tool,ReportJet,我还参考了Brio、MSTR、Cognos、BO和水晶这些大型的报表工具,我基本没有安装这些软件适用,都是看其发布安装文档和Demo进行功能预测——实际这也无可厚非,连Demo都没有表现的,肯定不是重要的功能。
总结出来这些报表系统或多或少都存在一下的特点(有好的有坏的):
- 部署或多或少的存在一定的困难,包括应用集部署和配置。
- 学习路线比较长,尤其是商业软件,必须要有一定的技术基础。
- 报表开发的界面完善程度和应用的庞大程度成正比。
- 都提供了报表调度和分发的功能。
- 缓存的功能强弱和应用的庞大程度成正比。
- 无缝嵌入其他应用的能力和报表应用的庞大程度成反比。
- 侵入性和应用的庞大程度成反比。
- 授权的整合难易程度和应用的庞大程度成反比。
- 最终用户功能的强弱和应用的庞大程度成正比。
- 自定义功能和价格成正比。
这些产品中的各个特点如下(不是很全)
- 润乾:强大啊,基于Cell的报表组件,的确不错,我也想扩展这个功能,但是经过测试,需要进行二次开发,而且门槛较高,对最终使用人员的要求较高。
- OpenReport :开源软件里面比较接近商业软件的一款产品,除了基础的报表功能之外,包含调度发布功能,类似MSTR的Narrowcast Server的功能;支持Ajax的报表生成,算得上是赶上时髦了。Demo质量做的不错,呵呵,用了心啊。从实例上分析,是直接从数据集生成报表,无甚新奇之处。部署比较简单,有自己的管理页面,不能进行无侵入的部署,的确非常遗憾。
- JasperReport:龙头大哥的表现的确不俗,支持单元格级别和复杂的交叉报表展现,但是过于庞大,有些不敢接受。Ireport适当的进行了补充,但是其构架的侵入性也是不容忽视的.各个区间和各种控件的使用,的确强大。
- Eclipse Birt:和JasperReport的功能比较,增强了编码和设计功能。和Eclipse的框架捆绑的很不错,也可以拆出来单独部署,但是功能多,意味着部署复杂。
- JavaEye Reporting tool:拥有自己的Portal,有自己的授权平台,算得上是一个完整的应用,但是我不喜欢。
商业软件都打了这么多年的仗了,有兴趣的自己去找资料吧,总结起来,商业软件:庞大、功能强悍、有自己的数据模型体系以兼容不同的数据源、有自己的分发引擎和调度引擎,支持复杂的计算和预警(高亮)等等,缺点也很明显,集成的时候非常麻烦、授权兼容基本不可能。
正式基于以上的不便以及自己期望和现实之间巨大的差距,俺决定自己写自己的报表——对于我而言,编写代码只是让我继续保持活力的一个手段。
ERIS的特点
我并非做广告,只是继续进行前期工作的组织和总结,即便是,那又咋滴,哈哈,我在自己的站点都不可以为自己打广告啊?真正的广告再仔细组织,写BLOG,想到就写,下面的就没有排序一说了。
- 简单方便的部署,应用分成两个部分,前端部分的JSP和后端的Jar文件,最简单的部署就是拷贝JAR文件和JSP文件即可(使用默认的JSP访问),也支持使用Servlet访问。
- 依赖少:目前只强依赖于Spring(考虑到使用IOC框架,所以选用了Spring,其他的库可选),这点和大多数应用兼容。
- 解藕输入输出:系统提供默认的输入输出处理,你可以对输入输出进行自定义,例如在JSF这样的暴徒前面,你可以替换默认的输出以适应这个暴徒的强奸。
- 支持参数化的查询:支持SQL参数查询,可进行单选、多选和不选以及不让修改几种参数的模式调换。
- 支持参数渲染:支持将更加人性化的参数选择。
- 支持XML和数据库作为报表基本信息的保存。
- 支持客户端完全自定义功能:客户可以在客户端(IE6+/FF2.0+)上进行报表的格式和数据的自定义。
- 数据处理功能包括
- 基础的SQL执行、内存数据源的取得,分页机制
- 行合并行小计
- 总计
- 旋转,分组旋转
- 图形展现
- 支持预警功能
- 支持计算列
- 支持Excel、PDF导出。
BTW:Aeneas
神话中特洛伊和罗马的英雄人物。是女神阿佛洛狄忒和特洛伊王室成员安喀塞斯所生之子。根据荷马所述,他在特洛伊战争中功绩卓著,仅次于堂兄弟赫克托耳。罗马诗人维吉尔的《埃涅阿斯纪》中叙述了埃涅阿斯在特洛伊城沦陷之后,背着他年迈的父亲逃出来,前往意大利,其后裔后来成为罗马的统治者
一个八卦:
在Cognos的站点上,他的Logo已经修改成Cognos:an IBM Company,真是有些啼笑皆非,这个BI公司的logo做的是不是也太糙了一点。我看到Cognos提供了一个叫做记分卡的东西(初步估计可能就是BSC),结果兴冲冲的注册了之后点击进去——一个大白脸,也不知道这个是怎么做的,是该我郁闷还是Cognos郁闷?