资源描述
FineReport技术白皮书 专业报表解决方案
FineReport技术白皮书
前言
报表的由来
随着现代化信息的高速发展,信息已经不再是传统的纸质文件,而是存储在计算机中的各种二进制比特流,但是存储的数据永远只能展现一条条的记录,而我们想看到的却是一种风格明确、样式美观的图表结合的展现,这个时候就产生了报表。
报表的本质是从原始数据中抽取出重要的信息,经过一系列的分析和处理后,在浏览器上给客户做最终展示,客户可以不用安装任何终端,直接通过浏览器进行报表的浏览。
报表软件的原理图
报表的现状
现如今,制作报表的方式主要是两种:
1:通过一些如Excel、Word之类的编辑软件进行报表的制作,这些微软自带的编辑软件可以做出很多和实际业务相联系的复杂报表,并且也能满足数据图表结合的展示,但是这类编辑器最大的缺点就是不能根据数据库中数据动态改变,而且每次编辑时都要进行反反复复的sql语句的编写,一旦出错,查找起来会很麻烦。
2:一些软件系统自带的报表展示,这类报表确实可以动态的取数,实现报表和数据库的交互,但是这类报表的局限性在于其展示效果和代码编写及系统维护之间的冲突。一般的自带报表都只能做一些简单的展现,这样的话代码编写简单,维护方便,但是一旦涉及到实际应用时,往往很难满足最终客户的需求。而且一旦想要满足客户需求时,就得找到开发系统的人进行相关代码的更改和重做,这样做起来维护相当麻烦。总结起来,为了满足客户需求,这类报表面临的问题如下:
l 项目周期大大超过预期,延期的问题非常普遍
l 项目开发过程中又产生了新的需求,不能快速响应业务需求的变化
l 项目验收后,用户自己不能维护,所有的定制工作都需要找软件开发公司
l 软件质量低下,不稳定,bug多
l 软件人才流动造成严重影响
以上几个问题带来的最直接的后果,即为项目亏损。出现这些问题最根本的原因,是用
户的需求不成熟,不断变化。而无论是采用定制的代码开发,还是基于一些平台的二次开发,都会有陷入问题泥潭的感觉。从本质上说,是因为在软件的开发过程中,需要编写过多代码的缘故,编写代码需要很高的技能,而且容易出错,导致bug。
Finereport的出现及作用
通过分析报表现状,我们可以发现如果有一款专门做报表展示的软件,对项目的完成和客户的展现都有很大的帮助。
但是99年到02年,几乎没有什么报表工具可以使用,java工具只有国外的几款,而且这些报表的制作对中国的复杂式报表却无能为力,很多时候根本就做不出来,而后来出现的一些国内软件也都是面临这些问题。
这时FineReport出现了,首先,由于FineReport的目的是立足于中国市场,理念是“高效易用,随需而变”,这让它推出来后很快的适应于中国市场的报表需求;其次,做这些基于数据库的展示,查询和录入的页面,不再需要编写代码了,而是通过FineReport提供的模板设计器,拖拖拽拽就制作出实现数据展示(报表),数据查询(参数)和数据录入(表单)功能的页面模板,然后将这些模板保存到FineReport服务器指定的目录下面。当最终用户通过浏览器远程访问某个页面模板,FineReport服务器会把用户指定的页面模板自动解析成零客户端的html页面给浏览器,这样用户就可以在浏览器里面查看或录入数据了;最后,由于FineReport的易用性、傻瓜性,可以在项目交付后把FineReport这个工具软件提供给最终用户,让他们可以基于FineReport做简单的页面修改以达到自我维护和更新系统的目的。
本文档的适用群体
软件公司:软件公司拥有专门的技术人才,很容易学会FineReport的使用,可以在ERP,CRM,OA等软件产品中集成FineReport,大大加快软件的开发进度,增加软件的稳定性,大大降低软件的后期维护成本,提高了最终用户的满意度。
其他的商业公司,政府机关等:有了FineReport,单位现有的软件,能够做到随需应变,对它们进行改进和增强,不再完全依赖于软件公司,而是自己经过简单的培训后就可以来做了。这样,单位所有的软件,不再是不能随时改进和增强的静态系统了,而是随着需求的变化而变化的动态系统了,从而彻底走出软件业的怪圈 - "年年需要花钱买新的软件,买来的新软件却不能满足年年变化的需求"。
文档提要
阐述FineReport报表产品
表明产品制胜点
介绍产品功能特点
展现产品技术特性
产品的应用和部署
产品系统化的扩展
产品价值及承诺
公司联系方式
您可以通过以下方式了解该产品:
TEL:
南京:
服务电话:(025)51862240
服务电话:(025)66780097
E-mail:
商务:business@
技术:support@
传真:(025)66780137
网址:
由于产品的更新,本白皮书并不代表帆软软件有限公司提供的产品与本白皮书描述的内容完全一致,敬请谅解。
CopyRight©2013
帆软软件有限公司.保留所有权利.
目录
前言 1
报表的由来 1
报表的现状 1
Finereport的出现及作用 2
本文档的适用群体 3
文档提要 3
公司联系方式 4
一、产品简介 9
1.1系统架构 9
1.1.1 FineReport应用架构图 9
1.1.2 FineReport技术架构图 9
1.2报表组成 10
1.2.1 报表设计器 11
1.2.2 报表服务器 11
1.3 产品环境支撑 12
1.3.1 软件环境 12
1.3.2 硬件环境 12
二、核心优势 15
2.1 设计器 15
2.1.1 Excel的设计风格 15
2.1.2 三层架构设计 21
2.1.3 多工作目录的配置 21
2.1.4 多人协同工作 23
2.1.5 零编码设计 24
2.2中国式复杂报表 27
2.2.1 多源分片 28
2.2.2 行列对称 31
2.2.3 自定义分组 32
2.2.4 动态格间运算 34
2.2.5 聚合报表 37
2.2.6 层式报表 41
2.3数据决策支持 42
2.3.1 数据分析 42
2.3.2 图表分析 46
2.3.3 在线实时编辑器 59
2.3.4 即时分析 60
2.4 Flash打印 61
2.5填报 63
2.5.1填报方式多样 63
2.5.2 多sheet报表使用 65
2.5.3数据来去无关 67
2.5.4编辑方式多样 68
2.5.5零客户端填报 69
2.5.6多级上报 69
2.6 B/S设计器 73
2.6.1 IT部门准备数据源 74
2.6.2业务部门构建即席报表 75
2.6.3一个人力资源管理的相关案例 80
2.7移动平台的展示 85
三、功能特点 86
3.1设计器 86
3.1.1Excel设计界面 86
3.1.2数据绑定 86
3.1.3自定义布局 88
3.1.4自动备份 88
3.1.5国际化语言支持 89
3.2报表设计 89
3.2.1数据源 89
3.2.2数据扩展 96
3.2.3行列对称 96
3.2.4分组 97
3.2.5多源分片 102
3.2.6聚合报表 103
3.2.7强大的函数支持 105
3.2.8动态格间运算 106
3.2.9数据结果处理 107
3.3报表展现 110
3.3.1单元格属性 111
3.3.2条件属性 112
3.3.3单元格形态 114
3.3.4钻取式报表 114
3.3.5套打 119
3.3.6分栏 120
3.3.7分页 120
3.4图表 126
3.4.1图表数据源 126
3.4.2图表类型 128
3.4.3图表交互 132
3.4.4图表属性设置 133
3.4.5在线切换样式 134
3.4.6组合图 135
3.4.7地图 136
3.5参数交互 136
3.5.1参数定义 136
3.5.2参数界面 137
3.5.3丰富的编辑器 140
3.5.4控件管理 142
3.5.5不延迟展示报表 144
3.5.6扩展功能 145
3.5.7通用查询 147
3.6填报 147
3.6.1填报属性设置 148
3.6.2单元格编辑类型 150
3.6.3自动计算 153
3.6.4展现后填报 154
3.6.5 多sheet填报 154
3.6.6 灵活的校验方式 155
3.6.7在线导入Excel 158
3.6.8 多样的填报方式 158
3.7输出与打印 160
3.7.1设计器中输出 160
3.7.2 B/S展现输出文件多样化 163
3.7.3完善的Excel输出支持 164
3.7.4打印方式 166
3.7.5灵活的打印控制 167
3.7.6 控件的打印 168
3.7.7在线实时编辑后的打印 168
四、技术特性 170
4.1 FineReport主要性能特点 170
4.1.1数据量和报表样式 170
4.1.2并发数量 170
4.1.3可靠性 171
4.2 FineReport相关实测数据 171
4.2.1容量 171
4.2.2响应 171
4.2.3并发 171
4.3 FineReport性能优化 172
4.3.1数据源的获取 172
4.3.2制表过程优化 178
4.3.3控件的优化使用 182
4.3.4导出优化 183
4.3.5并发控制与缓存机制 183
五、应用与部署 188
5.1 报表工作目录 188
5.2 项目部署 190
5.2.1 Java项目的无缝集成 190
5.2.2 非Java项目独立部署 193
5.2.3 与C/S系统的集成 194
5.3权限 198
5.3.1丰富的权限认证方式 200
5.3.2权限的粒度 202
5.3.3 灵活的权限集成 202
六、扩展实现 204
6.1 API实现原理 204
6.2开放的API 205
6.2.1 报表数据源 206
6.2.2 逻辑处理 206
6.2.3 导入导出接口 207
七、结束语 208
7.1产品价值 208
7.1.1零编码设计 208
7.1.2图表结合动态展现 208
7.1.3辅助决策共赢未来 208
7.2服务宗旨和承诺 209
一、产品简介
1.1系统架构
1.1.1 FineReport应用架构图
FineReport立足于中国复杂式报表需求,通过长达十年的应用,积累了丰富的经验,其在实际中的具体作用如图1.1所示:
图1.1 FineReport应用架构图
1.1.2 FineReport技术架构图
FineReport报表系统主要由报表设计器(设计模板)和报表服务器(解析模板)两大部分组成,使用层次鲜明的三层结构体系搭建,通过关系数据库接口连接数据源,所有的业务处理都在设计器(中间层)中完成,并最终通过服务器解析展现给用户,其技术架构图如图1.2所示:
图1.2 FineReport技术架构图
1.2报表组成
FineReport由设计器和服务器组成,其整体使用组成图如图1.3所示:
图1.3 FineReport整体使用组成图
1.2.1 报表设计器
FineReport设计器可以进行表样、数据、展现、打印等报表设计文件中各种元素的设计,是报表设计和报表应用开发、调试、部署的一体化平台,其组成原理如图1.3所示:
图1.3 FineReport设计原理图
1.2.2 报表服务器
报表服务器是指用在web环境中解析报表的Servlet形式的服务器,用户通过浏览器和报表服务器进行应用交互。
l 报表解析:FineReport服务器主要用来读取和解析设计器制作好的模板,并将模板转换成HTML页面,方便用户通过浏览器查看、修改和打印数据。
l 缓存管理:面对频繁访问所造成的资源浪费和效率低下,FineReport提供了强大的缓存机制进行数据的缓存,使用户的访问更加高效。
l 连接池的配置:通过建立一个数据库连接池以及一套连接使用、分配、治理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。
l 性能管理:支持分布式集群和超大数据量运算,并支持大量用户并发处理。
1.3 产品环境支撑
FineReport报表采用纯JAVA开发,报表工程支持所有可部署JDK的操作系统、有JDBC接口的数据库,支持UNIX/LINUX与Windows。而非JAVA的报表工具在这方面要困难得多。
1.3.1 软件环境
具体软件环境要求如下表所示:
操作系统:Solaris 、Aix、Windows、Linux、Unix、IRIX;
数 据 库:Oracle、SqlSever、Mysql、Access、Sybase、DB2、Postgre、Derby(主流的一些关系型数据库);
服 务 器:Tomcat、Jboss、Weblogic、WeB/Sphere、Tongweb、resin等web应用服务器;
浏 览 器:IE、FireFox、Chrome等主流浏览器。
1.3.2 硬件环境
具体硬件环境要求如下表所示:
帆软软件FineReport报表运行服务器最低配置要求
用户数
100用户以下
100~200用户
200~500用户
500~1000用户
1000~2000用户
2000~3000用户
3000~4000用户
4000~5000用户
5000用户以上
应用服务器
硬件配置
一般服务器(配置较高的PC也可)内存>=1G;
CPU:1个双核
一般服务器(配置较高的PC也可)
内存>=2G;CPU:1个双核
内存>=2G; CPU:1个四核
内存>=2G;CPU:1个四核
内存>=3G;CPU:1个四核
内存>=4G;CPU:1个四核
内存>=6G;CPU:2个四核
内存>=8G;CPU:4个四核
小型机(hp或ibm)
操作系统
Windows2000/2003 server
Windows2000/2003 server
Windows2000/2003 server
Windows2000/2003 server
Windows2000/2003 server
Linux/Unix
Linux/Unix
Linux/Unix
小型机提供商安装
注意:应用过程中的附件文件存放于应用服务器中,系统不支持文件的网络存储,以上服务器硬盘请尽量大,并能保持服务器上的硬盘可以扩增;
数据库服务器
硬件配置
可与应用服务器公用
可与应用服务器公用
内存>=2G;CPU:1个四核
内存>=3G;CPU:1个四核
内存>=4G;CPU:1个四核
内存>=6G;CPU:2个四核
内存>=8G;CPU:4个四核
小型机(hp或ibm)
小型机(hp或ibm)
操作系统
Windows2000/2003 server
Windows2000/2003 server
Windows2000/2003 server或者Linux(视客户的熟悉程度)
Linux/Unix
Linux/Unix
小型机提供商安装
小型机提供商安装
数据库
Sql Server 2000/2005 专业版
Sql Server 2000/2005 专业版
Sql Server 2000/2005 专业版
Sql Server 2000/2005 企业版
Sql Server2000/2005 企业版或Oracle9.1.2(其它版本也可)
Oracle9.1.2(其它版本也可)
Oracle9.1.2(其它版本也可)
Oracle9.1.2(其它版本也可)/小型机提供商安装调试
Oracle9.1.2(其它版本也可)/小型机提供商安装调试
帆软软件FineReport报表运行服务器优化配置建议
用户数
100用户以下
100~200用户
200~500用户
500~1000用户
1000~2000用户
2000~3000用户
3000~4000用户
4000~5000用户
5000用户以上
应用服务器
硬件配置
一般服务器(配置较高的PC也可)
内存>=2G;CPU:1个双核
内存>=2G;CPU:1个四核
内存>=2G;CPU:1个四核
内存>=3G;CPU:1个四核
内存>=4G;CPU:1个四核
内存>=6G;CPU:2个四核
内存>=8G;CPU:4个四核
小型机(hp或ibm)
小型机(hp或ibm)
操作系统
Windows2000/2003 server
Windows2000/2003 server
Windows2000/2003 server
Windows2000/2003 server
Linux/Unix
Linux/Unix
Linux/Unix
小型机提供商安装
小型机提供商安装
注意:应用过程中的附件文件存放于应用服务器中,系统不支持文件的网络存储,以上服务器硬盘请尽量大(400G及更大),并能保持服务器上的硬盘可以扩增;
数据库服务器
硬件配置
可与应用服务器公用
内存>=2G;
CPU:1个四核
内存>=3G;
CPU:1个四核
内存>=4G;
CPU:1个四核
内存>=6G;
CPU:2个四核
内存>=8G;
CPU:4个四核
小型机(hp或ibm)
小型机(hp或ibm)
小型机(hp或ibm)
操作系统
Windows2000/2003 server
Windows2000/2003 server
Windows2000/2003 server
Linux/Unix
Linux/Unix
Linux/Unix
小型机提供商安装
小型机提供商安装
数据库
Sql Server 2000/2005 专业版
Sql Server 2000/2005 专业版
Sql Server 2000/2005 专业版
Sql Server 2000/2005企业版
Oracle9.1.2(其它版本也可
Oracle9.1.2(其它版本也可
Oracle9.1.2(其它版本也可
Oracle9.1.2(其它版本也可/小型机提供商安装调试
Oracle9.1.2(其它版本也可/小型机提供商安装调试
硬盘空间1TG及以上
二、核心优势
2.1 设计器
2.1.1 Excel的设计风格
企业在选择报表解决方案时,不仅要考虑报表工具的功能和服务,还要考虑它是否易学、易用。国内用户都非常熟悉Excel,也经常用它做些简单的报表,所以我们从设计的方便性出发,研究出了贴近Excel使用习惯的报表设计器。拥有excel设计风格的FineReport设计器,不但能快速解决复杂的中国式报表制作难题,提高报表的制作效率,而且能大大降低设计人员的学习成本,提高企业的经济效益。
FineReport报表的设计风格和Excel相似(当然二者本质并不一样),整个设计窗口是格子式的可视化编辑界面。用户可以借助这个界面所见即所得的设计出任意复杂的表样,而且免去了传统条带式设计数据对齐的繁琐,使得报表制作的效果得以大大提高。
整体界面如图2.1所示:
图2.1 FineReport设计器整体界面图
2.1.1.1无限扩展的行列
FineReport设计器的界面与Excel一样,包括单元格的命名方式和组织方式,同Excel一样支持无限行和无限列伸展,用户在设计格子较多的报表时,也无须单行单列的进行添加,并且未使用的格子并不会占用内存,因此不存在性能问题,如图2.2所示:
图2.2 无限扩展行列示意图
2.1.1.2无失真导入导出Excel
由于很多公司以前制作报表都是使用的静态的Excel表,现在使用新的报表软件后往往面临着需要重做的难点。FineReport考虑到这一点,提出了完全兼容Excel的理念,并最终得以实现。
公式的兼容
①普通公式
除了相似的界面风格之外,FineReport还能够完全兼容Excel的所有公式,当Excel中的计算公式导入到FineReport之后,无需做任何更改,仍可以按照原有的计算规则进行运算,方便实用,见图2.3:
图2.3 Excel中公式设置
导入之后,见图2.4:
图2.4导入FineReport中的Excel
②公式拖拽
在报表的编辑过程中,我们有时需要重复写类似的公式,这样的话就很不方便,FineReport将完全类似的表格直接拖动,利用公式或字符串来进行单元格内容的复制。FineReport能够像Excel一样,完全支持公式、数字和字符串的拖拽复制,如图2.5所示:
图2.5拖拽复制示意图
格式的兼容
由于界面风格FineReport支持无失真导入或导出Excel。当客户有已经通过Excel画好的Excel表样,可以用FineReport导入Excel文件,然后将需要动态展现数据的单元格绑定数据列,设定处理逻辑,快速完成报表制作,大量节约报表制作者绘制表样的时间。同样,当客户用FineReport制作好的报表需要输出时,可以完全按照Excel的样式输出,如图2.6所示:
图2.6导入导出示意图
2.1.1.3行列变化时单元格引用的内容自动变化
设计报表时经常会临时增加行列或者删除行列,随之而来的就是公式会不会不能使用了,FineReport设计报表时在行列变化时,单元格引用的内容、公式都会根据行列的变化而自动变化,如图2.7所示:
图2.7公式自动变化示意图
2.1.2 三层架构设计
传统的报表工具在内网中工作时,需要将设计器和报表工程都部署到服务器上,这样就产生了几个问题:
1:在服务器上需要安装设计器,而对于使用内网的公司,服务器的安全要求一般都比较高,只有相应服务器才能去连接数据库,对于一些二层架构的报表来说,就需要在服务器上安装设计器,增加了服务器管理员的维护难度;
2:当服务器上的报表需求变化时,需要去现场进行操作,麻烦而且效率低;
3:进行一些迁移时,二层架构的逻辑比较复杂,相当麻烦;
FineReport基于此,采用主流的三层架构模式进行设计,只需要在报表设计员的电脑上安装设计器,设计完后,将工程部署到服务器上,其他用户只要电脑上有浏览器,就可以直接访问报表。一旦报表需求变化后,使用FineReport设计器,可以:
1:很方便的在本地进行设计然后通过工作目录的切换发布到远程服务器上;
2:直接对远程服务器上面的报表文件进行编辑;
这样对于公司的使用来说只需要部署一次工程,以后就可以直接远程设计,迁徙方便,提升效率,其实现原理如图2.8所示:
图2.8三层架构示意图
2.1.3 多工作目录的配置
FineReport提供了报表工作目录的概念,即每一个报表的独立应用或者集成环境都是一个工作目录。每个工作目录下都有相应的jar文件,报表模板文件,资源管理文件等。当我们在本机安装了FineReport之后,本机安装目录下自带的WebReport文件夹就作为一个独立的本地工作目录来使用。
在实际的应用中,更多的需求是使用远程工作目录。即报表服务器集成部署于实际的系统当中,报表设计者通过设计器连接远程环境,直接对报表模板文件,配置参数等进行编辑保存。特别如果有测试环境,生产环境等多个环境的情况下,FineReport的多工作目录便捷切换便能够给设计者提供极大的便利。
多工作目录即对应着多运行环境,具体如图2.9所示:
图2.9工作目录原理图
FineReport中的工作目录的配置界面及便捷切换工作目录如图2.10所示:
图2.10 FineReport目录切换示意图
2.1.4 多人协同工作
一个系统开发团队难免要多人同时从事报表的开发工作,可能每人承担一部分互不相关的模板任务,也有可能要利用到他人设计的报表。现在一般的管理方式就是SVN/VSS/CC等做版本管理,但是实现性较差,特别是如果误操作还可能带来文件恢复等较繁琐的工作量。那么借助FineReport的报表运行环境就可以轻松做到多人协同制表,实现如图2.11所示:
图2.11多人协作示意图
多个报表制作人员可通过远程设计器连接到同一个报表运行环境,同时该连接又依据权限控制每个制作人可操作的范围,保证多人工作情况下的数据和文件安全性。
另外为了防止多人同时编辑同一文件,导致文件冲突的情况,FineReport提供了模板加锁和解锁的功能,也就是当A制作员打开一张模板进行编辑的同时,可以对当前模板进行锁定,则其它的制作员就不能同时来编辑这个文件,有效防止了文件编辑冲突。
2.1.5 零编码设计
成品软件工具关键在于功能、性能和上手。前两点后面会具体讲到,而所谓上手就是指经过简单的培训或者自学,很快可以自己使用,这样的好处有:
1:无需花费大量时间和精力熟悉工具;
2:人员流动时能够快速交接,使得业务系统正常运行;
3:复杂的编码对用户来说是透明的,用户无需关注后台执行,不会影响系统的稳定性;
具有零编码设计功能的FineReport设计器,使得非编程人员也可以制作报表并且做得更好成为可能。只要是了解企业业务逻辑及简单的数据库知识的用户,都可以通过FineReport设计器,设计出符合自己实际业务需求的报表或表单。零编码的FineReport设计器不但为企业减少了相关人员的费用支出,还大幅度地提高了其报表的制作效率,为企业的快速发展提供强有力的支持。
1:拖拽绑定数据列:
图2.12 拖曳式绑定
如果要绑定的数据排列顺序比较有规律的时候,可以一次性绑定多列,直接拖曳至设计面板中,如图2.13所示:
图2.13多列直接拖拽
2:参数的设置
FineReport通过可视化的操作进行了参数的设计,如图2.14所示:
图2.14报表参数设计图
3:数据筛选设置
可视化的数据筛选,如图2.15所示:
图2.15数据筛选设置图
4:自定义工具栏设置
可视化的工具栏选择,如图2.16所示:
图2.16 工具栏设置图
5:最终展现
最终效果展现如图2.17所示:
图2.17最终效果展示图
2.2中国式复杂报表
中国式报表,从总体来讲,指的一些具有复杂性和任意性的报表。这些报表往往是样式不太规则,数据来自多个不同的地方,并且可能需要对数据在报表中进行一些相对复杂的处理。
FineReport提供了异构数据源模型、Excel+绑定数据列的报表设计模型等,使得行列对称,动态数据处理这些传统工具需要靠编码来实现的常见业务需求,仅通过简单的操作就能实现,轻松制作出复杂的中国式报表。
2.2.1 多源分片
企业想从一个数据表或一个数据库就想选出所有展现所需的数据是不切实际的,中国报表的一个重要特征是分片,与多源相关,但又不完全一样。多源一般都会是分片的,但分片却不一定是多源的。为了解决多源关联分片的问题,许多传统工具引入了子报表的概念。把每个分片做成一个子表,然后再在主表中拼接起来,传统工具理论上是可以通过子表拼接完成,但实际上仍非常烦琐。
FineReport天然支持多数据源(集),同一张报表的数据可同时来自多个数据表,多个不同的数据库,或者多个不同的用户自定义数据视图,然后在报表中可直接相互运算形成最终的报表。
传统报表工具在理论上只支持单数据集,对多集的支持依赖于数据库的运算能力(叉乘与联合、存储过程),这对于较简单的比如两三个表的关联还不是很复杂,如果需要关联的数据表超过五个,则一是SQL语句繁琐,编写和维护都比较困难,再者普通的Union,Join等操作返回的结果执行效率往往很低。这时候一般就需要进行大量的SQL优化工作或者直接编码,用存储过程来实现。当表中数据涉及到多库一般难以支持,逞论多种不同类型数据源了。
另外一种处理方式,就是将多数据源先变相整理成单一数据源,然后再进行其它操作,并不是真正意义上的多数据源。
传统工具分片有以下问题:
1.子表割裂了整表的一致性,一张报表被分成了多个小表,难以统一处理,给维护管理工作带来麻烦。
2.从格式上看,各个子表各自独立,很难将格线统一对齐,某个子表的格式进行了调整,所有其它子表都需要改动,这是极其繁琐的工作。
3.每个子表的大小不固定(可能随数据记录数而变化),由于传统工具的行列不对称。纵向排列的几个子表可以自动摆位,而横向则不行。
4.主子表之间和子表相互之间都无法沟通数据,只能将主表的数据作为参数传递给子表,子表无法带回信息,也无法向其它子表提供信息。这时,整表的混合运算将非常困难,必须单独计算,无法采用子表的中间运算结果,不仅书写复杂,运算效率也很低。
FineReport是纯java报表软件,支持多数据源(集),将一个数据库中不同数据表或者不同数据库中不同数据表的数据取出来展现在一张报表上。
FineReport连接数据源的方式多种多样,支持通过JDBC的方式直接连接数据库,或通过JNDI的方式与应用服务器共享数据连接,也支持通过JCO连接SAP系统。支持的数据库类型如Oracle、 DB2、SQLServer、MySQL等主流的数据库,除此之外,自定义的程序数据源,文本数据源,Excel数据源,XML数据源等等都可以直接作为报表的数据源来进行设计工作,同时数据源还具有无限的扩展性,可以支持WeB/Service, SOA等标准的数据。
图2.18多源报表示意图
报表的分片指的是报表被分成了多个区域,每个区域重复规则不同,而又可能相互运算。传统的工具,大部分是条带状的处理模式,纵向的处理较多,而对于横向的处理能力很弱,仅能通过固定的模型来支持简单的交叉表。
如图2.19,这是一个既有动态扩展数据,又有静态计算数据的分片报表。图中按照背景色的标识报表分为相对规则的四片:最上方的一组为动态横向扩展的表头,表明地区与时间信息,来自订单表;中间左上侧产品来自产品表;红色区域计算数据来自订单明细表;后面的白色背景部分,是动态的数据计算部分,是对所有订单明细的销售数据进行汇总运算;下方左侧客户名字来自于客户表;右侧黄色背景计算数据来自于订单明细表。而所有的订单数据计算都和其下侧的订单明细表通过订单ID关联,通过客户ID与客户表关联,也就是虽然报表分为了多片,但各片的数据之间又并非各自独立,相互之间互有关联沟通。
图2.19实际图表展现
这样的报表虽然总体上是一个规则的整体,但是实际上却是不规则的数据布局方式,那么也就无法通过将多源整合成单一数据源来实现,那么传统的报表工具对这样的报表,就只有编码这一种解决方案。
虽然像大多数工具也都提供了子报表来解决报表中格式不规则的情况,但是即使是子报表,受数据处理模型所限,也仅限于支持明细和列表结合的报表,如图2.20所示:
图2.20子报表示意图
FineReport界面的自由布局方式,使得报表的样式仅通过几次拖拽就能够完美呈现。而多源支持,则只需要通过单元格中设置关联条件即可将明细区与列表区的数据关联对应起来,全程无需任何的编码。
2.2.2 行列对称
一些传统的报表工具,由于条带状的展现方式的缺陷,数据的纵向展示能力要远远强于横向,就需要专门的模型来制作交叉表。因此传统的工具也就以此将报表的类型划分为分组表,交叉表,主从表,明细表等类型,且两大主要的模型分组表与交叉表各自独立,不能互通,事实上并非所有的报表都遵循这些固定的格式,实际中的报表往往多种特性综合体现。
例如图2.21所示报表有些类似我们在多源分片概念当中提到的分片报表,实际上由于行列对称的原理,我们在报表设计时可以按照需要任意定义扩展的表头样式。下表可以分为相对规则四部分:
销售数据按照类别,地区汇总;
销售数据按照类别,年月日期汇总;
销售数据按照客户,地区汇总;
销售数据按照客户,年月日期汇总。
图2.21 分析报表示意图
FineReport采用的是EXCEL+绑定数据列的处理模型,天然支持行列对称,所有纵向的操作都可以在横向得到同样的充分体现。不仅不需要专门设定交叉表模型,还能够支持任意格式不规则的展现样式。 例如将这张表的行列对调一下,可以看到效果如图2.22所示:
图2.22行列转换示意图
2.2.3 自定义分组
常见的原始数据存储的是具体的数值,而统计分析需要按照区间或条件来统计相关数据,这是典型的按段分组,也就是自定义分组:指数据的归类方式并非按照常规的已有数据来分组,而是按照分段分组或者其它不规则的分组。
FineReport提供的自定义分组又可以按照分组方式分为条件分组和公式分组。条件分组主要用于支持分段型分组。例如图2.23是根据销售额的数额汇总划分客户的等级,这个等级字段在数据库是不存在的,因此使用分段分组来实现。
图2.23条件分组示意图
按段分组使用的设置,是高级分组当中条件分组,以枚举的方式来得到新的分组:
图2.24 FineReport可视化操作
相对条件分组来说,公式分组更加灵活,能够支持更加复杂的分组逻辑。例如普通的分组是按照每个字段单独作为一个分组基础。而可能在某些报表的分组中,是需要按照两个字段内容一一组合后,完全相同的记录才归为一组。这时候就需要用到公式分组将两个字段拼合到一起。
效果如图2.25所示:
图2.25公式分组示意图
除了利用自定义分组对数据进行处理之外,在实际的应用中还有一种非常常见的分组方式,是组织递归分组,一般表现形式为企业或事业单位,或集团或部门的组织结构,并且数据的存储方式往往是关系映射表的类型,以ID,PREID形式来标明数据记录的层次关系。
一般的报表工具处理此类的数据都要经过复杂的设置或者表达式编写,FineReprot则提供了专门的组织递归树模型。
通过组织递归树,可以快速自动处理递归型的数据结构,使得组织结构形式的分组实现效率大大提高。仅需通过几个简单的拖拽就可以实现如图2.26所示形式的分组:
图2.26递归树展现报表
2.2.4 动态格间运算
现今的企业从数据库中取得数据后,往往都需要提供一些计算方法,对数据进行一些分析处理,例如求和,平均,统计个数等都是基础的数据处理。而同期比,环比,排名,占比,累计这些涉及到同一列数据之间的运算,我们称之为跨行组运算。例如环比,是将本期数据与相邻的上期数据进行比较,而本期数据与上期数据都是来自于同一列数据,这是跨行计算。同比,是将本期数据与上一年同期内每个数据作比较,例如本年5月的销售额比较上年5月的销售额,这两条比较的对象也来自于同一列数据,但又不是相邻,分属于本年和上年两个不同的组,这是跨组计算,具体如图2.27所示:
图2.27动态计算示意图
而由于报表工具制作报表,返回的结果集是动态的,也就是说我们在设计界面中只能够了解到这个区域获取的具体是某个数据集的一列,但是这一列将返回的数据内容和总
展开阅读全文