报表引擎 -架构描述

介绍

本文档是报表平台的技术架构描述,文中会描述主要的设计思路和设计决策。

架构目标和约束

报表平台作为独立的公共服务产品,可以简单的集成到各产品的报表应用

可维护性和可扩展性

  • 扩展运算与分页独立实现,代码更易于维护
  • 扩充表达式可以提高报表的运算能力
  • 在此报表引擎上可以构建多维分析应用

可用性

  • 能适用于上万条记录的报表数据量
  • 适用于Web页面显示

易用性

  • 针对技术人员,提供类似Excel编辑设计器
  • 对多维分析提供专用设计器
  • 其他情况下,需要再行开发设计器

实现约束

  • 采用XXX实现
  • 使用与XXX相同的表达式引擎和类似的表达式语法
  • 采用XXX作为显示组件

架构表现

文档描述了系统的主要模型,包括:

  • 用例模型: 从系统外部角度表现重要的参与者和用例
  • 分析模型:以平台独立性提炼用例重要分析元素和用例的分析实现
  • 设计模型:从平台方面描述部署结构、设计元素结构等

用例模型从外部系统的角度描述了系统的行为。

用例模型

  • 应用用例:描述用户如何与系统交互以实现预期的功能

2009111510312839.gif

用例

描述

基本要求

设计报表

报表设计人员通过这个用例设计一张报表

通过提供的报表设计器进行报表定义

浏览报表

使用者通过此用例查看报表数据

查看前有些报表需要输入参数

预览打印报表

使用者通过此用例以分页方式查看报表,并可以打印报表

  

填报

使用者通过此用例进行业务数据的输入

对于上报可能需要自动汇总功能

多维分析

数据分析人员通过此用例可以从多维度分析数据

专有的多维报表设计器,查看报表时提供交互功能

  • 基础结构用例:描述应用用例的每一步如何添加诸如可用性、可靠性、性能、容错性等质量属性
  • 扩展用例

分析模型

架构性重要分析元素

2009111510321061.jpg

描述

基本要求

扩展运算引擎

对设计的报表通过模型扩展并进行运算,生成完整的最终报表

需要注意扩展和运算的效率

分页引擎

把最终报表通过分页引擎和分页规则生成多页报表

  

数据源

提供给报表的数据来源

外部定义数据源程序集,实现特定接口

表达式引擎

实现报表运算中定义的表达式

可以扩充表达式增加报表的运算能力

报表元数据

报表的定义描述文件

报表文件以XML方式存储

设计器

对报表提供统一的表格式设计器,对多维分析提供专有设计器

使用ViewGrid控件

打印预览

以分页方式浏览数据

实现轻量级预览控件,减少系统资源

架构性重要用例实现

设计模型

设计元素

2009111510325768.gif

部署结构

2009111510332689.gif

组件结构

2009111510334997.gif

更多内容:productView-pdf_46x35.gif  报表引擎设计.pdf

 

欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

转载于:https://www.cnblogs.com/zhoujg/archive/2009/11/15/1603285.html

这是一个通用报表引擎,构想完成的功能有: 1、提供给软件开发商一个报表开发中间件。针对c/s平台,用户可以以SDK的方式或Com的方式将其加入到自己的产品中。 针对b/s平台,该中间件通过在应用服务器端嵌入服务以处理WEB报表请求同时返回HTML页面。C/S架构中能够非常方便 的展示、打印、自动分页等功能,可以通过配置文件配置一张报表。支持复杂的财务报表。 2、可以作为一个通用的外挂式报表系统终端,可以在设计器中设计报表的取数规则,这些规则包括数据来源的数据库、数据 表以及相应的取数条件,这些规则会被报表底层解析成特定SQL语句并执行。最后将返回的数据直接按照配置的数据展示 逻辑展示在报表设计器中。 3、可以作为一般通用的表格应用系统被集成到应用软件中,以提供类似于Excel的部分基本表格功能。 以下为软件架构及开发现状的一点说明: 目前,报表底层大部分功能已经完成。Demo展示的报表设计器由于时间比较仓促部分底层已实现的基本功能还没能集成进去, 所以此Demo程序仅能展示部分功能。同时由于方便打包及展示,我特意将报表底层部件静态编译到了设计器中。这样演示的 时候作为一个“绿色软件”可以不基于其他支持库而运行。真正的报表底层包括以下几个Dll: 1、LTableLib.dll (提供表格的基本逻辑) 2、LGridLib.dll (提供数据表的一些增强功能) 3、LSheetLib.dll (提供类似于Excel中工作表的功能) 4、LGUILib.dll (提供表格绘制功能:为了兼容于非Windows系统(如Linux) ,特将系统相关的展现接口独立出来。可以非常方便的将本系统移植到非Windows系统中) 5、LGridBook.dll(封装类似于Excel中工作簿(Book)功能,本Dll为提供用户SDK开发的最终接口) 6、(可选)CLGridBook.dll(为了兼容其他支持Com标准的非c/c++开发工具(如:VB、VF、Delphi等),特意将底层封装 为一个标准Com组件,可以更加方便的提供支持) 最后,为了支持后续的功能扩展,系统设计成了一个开放性系统。新增的功能可以通过实现系统提供的各种插件接口进行任意扩展(如 Demo中插入图片的功能就是其中一个例子,另外艺术字及图表功能可以通过类似方式提供支持)。在可移植性方面,由于所有的底层代码 均采用标准C++编写,同时有效的将操作系统相关的技术进行了抽象(如展现GUI、事件、定时器、同步对象等)。在移植的时候只需要 重新实现几个简单的接口就可以了。 Demo中LRptDemo.etl文件是用设计器设计的一个报表样式,可以通过设计器将此文件打开展示。由于开发设计器的时间比较仓促,所以很多 菜单功能以及部分工具按钮功能还没有加进去(尽管这些功能以及被底层所支持)。 另:报表类似于Excel的公式及常用函数支持正在编写中,已实现的功能也不可避免的存在或多或少的BUG,见笑了 :) 如需要SDK/或COM开发包可以发邮件给我。呵呵:) E-Mail:zhiyong.luo@longshine.com
--新增功能:支持图片显示 --新增功能:增加分组头设置,支持按字段分组,分组次级排序 --新增功能:增加Avg求平均函数,GroupRowNumber分组行号函数 --新增功能:支持四则运算优先运算 --新增功能:单元格支持拖放调整顺序 --新增功能:新增百分率格式化 --新增功能:新增RowNumber行号函数 --修正数个Bug 详情参考:http://blog.youkuaiyun.com/hunkcai/archive/2010/10/10/5932204.aspx Web报表引擎: Web上的良好的打印解决方案,WinForm的打印预览体现,报表自动化,支持直接打印,页小计,统计,转成金额大写,一维码显示, 图片显示等功能,满足中国式报表的常见功能需求。 Web报表编辑器: * Web上良好的报表设计用户体现,可视化编辑,支持设计/预览视图撤换。 * 通过下拉框选择,快速设置报表数据的绑定。 * 支持单元格内容格式化(数字,金额,日期等)输出。 * 通过表达式编辑,轻松设计页小计行或页统计行。 * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 注: * 用Adobe Flash Builder 4/Flex Builder 3开发环境打开,用Flex SDK 3.5进行编译 * 内有报表样式定义说明 * 内有Demo工程参考,使用MyReport * 不提供MyReport源码,提供swc组件(类似dll) * 只需少量工作就能把MyReport整合,获得良好的打印体现和报表设计体现。 * 报表引擎效果图参考:http://blog.youkuaiyun.com/hunkcai/archive/2010/01/14/5190898.aspx * 报表编辑器效果图参考:http://blog.youkuaiyun.com/hunkcai/archive/2010/04/21/5512031.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值