因项目需求,需要一个用户可定制的报表系统,本以为是个很轻松的工作,因为开源社区中有很多很强的开源框架,如JasperReport,openReport,birt等等,但仔细研究以后都很难满足我的需求,关键不是它们的功能不行,主要是他们都基于配置模板文件,虽然都提供了很好的Gui工具,可以很轻松绘制报表,但这都是基于给用户定制报表,如果想让用户定制报表该怎么办?我所说的定制包括,报表样式,group,列,实体,排列规则,筛选规则,及输出格式(html,word,excel,pdf).刚开始我的想法是先让用户提供各种定制参数,然后根据这些构建模板文件(大多是xml格式),然后用开源框架进行绘制。但我很快就放弃了这种想法,原因有两个:1)这些配置文件的格式都比较复杂(比如.jasper文件),自动生成的难度很大,并且也没这个必要;2)效率问题,因为此系统是要针对与多数用户,我担心系统吃不消。
   经过仔细分析,我需要的报表系统的关键不是在报表的绘制,只要能达到清晰,明了的表格效果就足以。关键在于用户的定制。所以用一些大型的报表系统没有必要,我不需要那么多功能。逐渐我就有了自己开发一个基于web用户可定制的报表系统。
   此系统的主要部分有三个,一个是用户定制数据搜集部分,第二个是根据定制数据进行渲染和输出,最后一个把定制数据保存在数据库中。难点也是这么三个,构建数据结构,根据数据结构绘制报表,把数据储存到数据库中。我打算借用swing的架构和思想,用mvc的架构,最初的系统还是基于ssh(struts+spring+hibernate),还是先满足项目需要,然后如果有时间再把它抽出来,只用jsp+sql+xml,还是想把它最后能做成一个独立框架,毕竟我认为是个很好的想法。难度很大,但也不是mission impossible,加油!给自己鼓劲!