润乾报表技术白皮书北京润乾软件技术有限公司2006年3月目 录第1章 总体说明 41.1 润乾报表软件概述 41.2 产品构成 5第2章 新一代报表模型 72.1 数据统计模型 72.2 数据填报模型 18第3章 功能详细描述 223.1 报表设计 223.2 报表展现输出 413.3 数据填报 523.4 交互与OLAP 583.5 报表管理中心 633.6 报表任务调度 65第4章 部署与应用方案 674.1 报表设计模式 674.2 报表应用部署方式 694.3 数据报送应用方式 734.4 支持环境 76第5章 性能指标与控制 785.1 性能分析 785.2 实测指标 795.3 控制手段 80第6章 集成接口 826.1 数据源 826.2 JAVA API 846.3 前端接口 866.4 设计器接口 88第7章 特点与优势总结 907.1 新一代报表模型 907.2 真正易用的报表工具 907.3 纯JAVA报表软件 917.4 强有力的填报功能 917.5 独有的字符终端解决方案 927.6 开放的系统 927.7 可靠的本土支持 93第8章 逐点应答 948.1 功能性要求 948.2 非功能性要求 998.3 实施服务要求 110第9章 建议 1139.1 选择开放性的工具 1139.2 与应用紧密集成 1139.3 基于实际业务报表进行测试 114附:某保险公司统计报表系统实际测试报告 115第1章 总体说明1.1 润乾报表软件概述润乾报表是用于统计报表制作及数据填报的大型企业级报表软件,它提供了高效的报表设计方案、强大的报表展现能力、灵活的部署机制,并且具备强有力的填报功能,配合以全面的用户权限管理、报表调度功能和交互功能,为企业级统计分析、展现提供了高性能、高效率的报表系统解决方案。
润乾报表软件的核心特点在于开创性地提出了新一代报表数学模型,采用了革命性的多源分片、不规则分组、自由格间运算、行列对称等技术,使得复杂报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQL编写与前期数据准备,报表设计的效率提高了一个数量级润乾报表是一个纯Java报表工具,提供了全面的API接口,是开发Web报表软件的理想选择Java报表工具的跨平台特性,使得它能良好地支持大型系统的需要润乾报表不需安装控件,可以实现纯HTML报表方式,可以支持PDF,EXCEL等输出,提供了全面的页面与打印控制,能很多地满足Web报表的展现需要同时,润乾报表对图表有良好的支持,可以生成柱图、饼图、折线图等二十几种图表润乾报表提供基于动态库表关联技术的填报功能,完美解决数据入库的难题,极大提高填报表单的处理效率,扩展了Web报表工具的应用方式润乾报表提供了报表管理中心,可以对报表建立多层次的目录管理,进行全面的用户和基于角色的权限管理润乾报表还提供了调度器模块,可以实现定时、批量等报表自动处理和报表的自动分发1.2 产品构成1.2.1 基础部件润乾报表由两大核心部分组成:l 报表设计器:设计编辑报表,自带报表运算引擎,连接数据库后可预览打印报表,并可生成其它格式保存。
设计器不依赖于其它部分,可独立工作;设计器以Java应用程序(JavaApplication)的形式提交l 报表服务器:在后台提供统计报表运算和数据填报处理的服务,开放各层次的API接口调用,由程序员调用生成结果报表;服务器运行不依赖设计器;服务器以Java类包(jar)的形式提交,一般情况下不需要物理上的独立服务器1.2.2 可选组件除基本部件外,润乾报表还提供如下可选组件:l 报表管理中心:一个简单的独立报表管理应用,处理用户角色权限控制、功能组织等,终端用户可直接采用该组件完成报表管理、查阅、填报等工作,报表管理中心运行依赖于报表服务器l 报表调度器:作为服务程序运行,在设定的时刻自动计算报表并将结果保存或推送到指定的目标,报表调度器运行依赖于报表服务器;l 集成(远程)设计支持:包括基于HTTP协议的JDBC接口、基于WebStart技术的设计器封装包和可编程的设计器远程文件访问接口基于该组件可将报表设计器集成于用户的统一门户管理之内(B/S或C/S均可)、实现远程报表设计、统一管理报表模板文件等功能;l Windows展现控件:包括应用于Windows GUI程序的ActiveX控件、生成EXCEL/PDF流的DLL调用及相关后台的服务程序,基于该组件可将报表运算结果以控件形式显示于Windows GUI程序中。
l UNIX的C接口:包括后台服务程序与前端通讯的C程序,通讯部分的C代码以源码形式提交(.H和.C文件),基于该组件,可将报表应用于UNIX下的C程序中第2章 新一代报表模型2.1 数据统计模型数据统计模型是报表工具最重要的指标,它决定了报表工具最基本的制表能力,即在不编代码的情况下能够制作出何种报表事实上,市场上的众多传统报表产品在处理复杂报表时确实存在明显缺陷,大量报表仍需编写代码准备数据润乾报表开创性地提出了新一代数据统计模型,采用全新的概念方法比较彻底地解决了中国复杂报表中的各项问题2.1.1 多源分片多源分片是中国复杂报表的基本特征多源是指一个报表的数据来源来自多个物理数据表(或类似数据体),甚至是多个物理数据库这里的“多个”常常不是两个三个,而是七八个乃至十几个传统工具的基本报表单元只支持单源报表,需要在报表设计前将多源转化成单源处理两三个源尚可写SQL语句完成(JOIN或UNION等),但多到五六个源以上时,一方面对应的SQL语句过于复杂难以维护,另一方面运行效率也很低,这时常常要编写存储过程或其它代码来准备数据了如果多源来自多库,则更为复杂,无法直接写出复杂SQL或存储过程,需要架构专门的数据库桥后才可以完成。
某些传统工具也所声称的支持多源,实际上就是指多数据库支持,把数据库桥功能集成进入报表工具中,但真正到报表设计时仍然只能单源多源往往带来分片,正是由于分片,使得报表设计必须直接基于多源进行,而不能先将多源转成单源进行有相当一部分分片报表无论如何也不可能换成单源处理,部分能转成单源的报表处理也非常繁琐分片是指报表的纵向或横向或双向同时被分成了多个区域,每个区域扩展重复规则不同,而又可能相互运算传统工具能够处理的上下格式一致和列方向固定的分片报表(即可由多源转成单源的报表),但会迫使用户编写复杂的SQL(UNION+JOIN)和代码准备数据,导致工作量大且维护困难;对于横向分片数较多报表,由于必须采用JOIN方式准备数据,关联条件复杂时很可能导致出O(Nk)的高计算复杂度(k为分片数),性能很低表1是个典型的纵向分片报表,数据区从上至下分成了几片,先是一片按客户汇总的两级分组区域,然后是两个固定计算行,接下来又是一片按年度汇总的一级分组区域,最后又是一个固定的合计行各片分组层数不同,而且变动与固定固定结合,而且各片之间还有数据沟通(某些计算行的值是由其它行计算出来的)这种上下格式不一致的报表,其数据源不可能组织成单源(各片列数不同),也就不可能被传统工具实现。
表1我们把表1横过来摆形成表2,成为一个横向分片表类似的,也是有两片分组层数不同的变列区域和几个固定的计算列混合而成传统工具只提供比较死板的交叉报表模型处理变列报表,其中的集合运算只有固定的几种选择,不可随意加列,更不可能有多片变列区域,而这种复杂的动静混合交叉表就只能手工编程动态加列实现表2为了解决多源分片的问题,许多传统工具引入了子报表的概念把每个分片做成一个子表,然后再在主表中拼接起来如上述的表1理论上是可以通过子表拼接完成,但实际上仍非常烦琐子表割裂了整表的一致性,一张报表被分成了多个小表,难以统一处理,给维护管理工作带来麻烦从格式上看,各个子表各自独立,很难将格线统一对齐,某个子表的格式进行了调整,所有其它子表都需要改动,这是极其繁琐的工作而且每个子表的大小不固定(可能随数据记录数而变化),由于传统工具的行列不对称(下面还会谈到),纵向排列的几个子表可以自动摆位,而横向则不行,如上述的表2即使用子表也无法完成(数据可以拼出,但格式无法拼出)而且,主子表之间和子表相互之间都无法沟通数据,只能将主表的数据作为参数传递给子表,子表无法带回信息,也无法向其它子表提供信息这时,整表的混合运算将非常困难,必须单独计算,无法采用某些子表的中间运算结果,不仅书写复杂,运算效率也降低。
表3就是个典型的主从表,当然也是典型的多源分片报表主记录中的金额显然是明细信息中各产品金额的和,而在传统工具的主子表模型中,主表的合计值不能引用子表的数据,必须自行重新计算表3润乾报表则直接支持多源(集)设计,在同一张报表中可同时引用多个数据集,摒弃了传统死板的条带式扩展模型,而代之以独创的单元格扩展方案,各数据集即可以独立扩展,也可以相互引用,扩展部分与固定部分可自由结合;而特有的主格关联技术则可灵活地决定各级统计的范围,保证汇总运算的合理性与正确性表1在润乾报表中将如下设计:需要根据数据变动的行(5/6行)采用单元格扩展(B5/C5格)机制(其中的ds1.group函数即负责扩展重复),而中间的固定行(8-11行)则可直接写上,下一片变动行(13/14行)又采用单元格扩展(B13格)进行(ds4.group函数),两片扩展分别基于不同的数据集(ds1和ds4),且层数不同,右边的sum运算中还能引用这些格值,整个报表即分片又统一,完美地解决了多源分片问题完成表2只要简单地将相关的扩展单元格改变位置和方向即可,如下图所示,润乾报表在行方向的扩展能力能够完全应用在列方向上(横向扩展),使得中国报表中常见的横向分片、多片变动、动静结合的问题很容易解决。
对于表3这种主子表,在润乾报表无需借助子表概念完成,明细表(8-10行)本身可以自行扩展重复,而且由于了设置主格关联,整片明细表会自动跟随主记录重复,而且主细表间可自由沟通信息,如E3格中的金额合计可直接由G9格中金额明细计算出来(表达式SUM(G9{}))2.1.2 不完全划分不完全划分是中国复杂报表中的典型特征之一传统工具中的数据分组延用了关系数据库中的相应概念,为完全规则划分,即划分标准一致且有规则(一般都按某个字段或表达式),所有事实都必须出现且只出现一次,分组值次序与原数据记录次序一致与完全划分相反,在报表汇总中却常常需要不规则划分,即划分标准看不出规律(常常只能穷举),所有事实不一定全部出现在分组结果中、个别事实还可能重复出现,次序也与原数据记录无关固定分组是不规则划分的常见表现表4表4是个含有不规则划分的人员统计表(同时也是个分片报表)年龄段的分组就是个不规则划分,划分规律不明确,只能穷举出来;分组不完全,没有列出所有的部门,每个一级部门中还可能有一些不属于任何二级部门的人(其他类)表5表5则是另一种形态的不规则划分报表它的地区分组有三个特点:华北部分地区中未包括内蒙古,出现了不完全分组;山东和青岛有重复的部分,出现了可重分组;而且地区次序是确定这样排列的,和数据记录的次序无关,是个典型的固定行分组报表。
这两个报表用传统工具实现都较为困难,虽然报表格式并不复杂,但由于出现了不规则划分,无法直接用报表工具的分组功能完成,只能编程把数据准备成一个单层的二维表数据源,即加大了工作。