最新NC报表开发手册.doc





《最新NC报表开发手册.doc》由会员分享,可在线阅读,更多相关《最新NC报表开发手册.doc(127页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、报表模式化开发手册(V1.0,forNC-V3)朱俊彬、赖宏伟、李媛媛 NC-UAP目录第一章总体介绍. 21.开发概述 . 21.1技术型报表与业务型报表. 21.2一般报表开发存在的问题. 21.3模式化报表开发思路. 22.应用模型 . 32.1数据模型与展现模型. 32.2数据字典. 42.3业务系统集成. 5第二章低开发难度报表. 61.概述 . 62.查询类报表 . 82.1明细报表. 82.2汇总报表. 172.3列结构依赖于查询条件的报表(动态SQL). 233.交叉类报表 . 303.1列向拼接查询型报表(复合查询). 313.2列向分支统计型报表(CASE-WHEN). 3
2、63.3动态行列交叉型报表(旋转交叉). 404.投影类报表 . 454.1单元格依赖于行列条件的报表(投影交叉). 454.2半录入半嵌入型报表(合并查询). 515.算法类报表 . 555.1数据加工预备知识. 555.2非投影类占比报表(普通占比). 605.3投影类占比报表(投影占比). 655.4程序送数型报表. 696.高级应用 . 736.1支持穿透的非投影交叉类报表(普通穿透). 736.2支持穿透的投影交叉类报表(投影穿透). 796.3支持主从连动的报表. 846.4支持统计图表的报表. 88第三章高开发难度报表. 921.基于行业报表工具开发的报表 . 921.1标准报表
3、. 921.2分块填充报表. 1042.基于CELL REPORT工具开发的报表. 1112.1CELL REPORT工具介绍 . 1112.2CELL REPORT报表 . 113附录. 1241模式一览表 . 1242查询引擎FAQ之参数篇 . 125第一章总体介绍1.开发概述1.1技术型报表与业务型报表我们将报表应用划分为两种类型,一类应用的侧重点在于出报表所蕴涵的技术,开发者(程 序员或实施人员)通常凭借一定的数据库和编程知识,基于库里的业务数据,做出符合用户 需求的报表展现和输出,此类应用称为技术型报表;另一类应用则着眼于整个报表生命周期 中各环节的管理(包括出表、上报、审核、汇总、
4、发布等流程),即把做报表的行为当成一 项业务,对直接开发者的主要要求在于业务熟悉程度而非技术,此类应用称为业务型报表。前者通常由专业程序员、二次开发人员或技术型实施顾问承担开发工作,早期工具如报表模 板、自定义查询等均面向此类应用,IUFO 则是后者的代表性产品。本文档作为集团平台技 术部对外发布的开发手册,主要针对对象为技术型报表。1.2一般报表开发存在的问题报表属于 ERP 项目中的关键应用,通常被用户的高层领导用于企业业绩评估、辅助决策或 对外发布。据统计,在很多交付压力较大的项目当中,报表开发占有相当的比重。就目前开 发现状而言,影响报表快速交付的主要问题有以下几点:1、 报表开发本身
5、的复杂性高。中国式报表由于政策以及长期人工填报的原因具有极强的个 性化特点,根据业务逻辑进行数据查询、数据组织、表样展现和界面处理的每个步骤都 耗费了很高的开发代价;2、 报表开发的复用性低。开发人员投入巨大努力完成第一批报表后,发现第二批报表依然 要从头做起,或者另一名开发人员遇到类似于第一批报表的需求,无法借鉴(甚至根本 不知道)前人的开发成果;3、 报表开发对专业技能要求偏高。很多二次开发人员虽然不是专门搞技术的,但通常具有 一定的开发基础,而目前的二次开发平台限制了他们发挥应有的作用。1.3模式化报表开发思路所谓模式化开发,包含两方面的工作:专职人员将有代表性的应用进行归纳抽象,提取出
6、共 性的部分形成代码框架和方案,并以手册的形式对外发布;报表开发人员拿到项目需求后, 从手册上找到匹配的模式,通过编写一些低技术含量的子类代码或进行一些机械性的工具操 作,就能够快速地完成开发工作。以往大部分的重复性劳动已经在模式的基类或者缺省实现第 2 页中处理,当开发人员需要体现个性化的时候,则可以通过自己对接口的特殊实现完成。随着模式的逐步丰富,开发人员开发各类模式报表的工作量都会明显降低,同时也实现了代 码复用和知识共享,另一方面,由于开发者的工作趋于简单和机械,他们的角色就可以由低 专业技能人员所取代。从这个角度上说,模式化是解决上节所述三个问题从而真正实现报表 快速开发的有效方案。
7、本手册介绍了两大类 NC 报表开发模式,一类是基于查询引擎的低开发难度报表,其编码量 小,操作简单,适合于开发数据和格式比较规律的报表;另一类是基于行业报表工具的高开 发难度报表,主要工作是编写子类代码,自由度高,适合于开发复杂报表。2.应用模型2.1数据模型与展现模型一般来说,报表是由数据和格式组成的整体。报表的数据模型通常包含以下信息:1、 数据结构;2、 待定参数描述;3、 取数规则描述;4、 数据加工算法描述;5、 多个数据集合之间的数据关联描述;可作为数据载体的常用 NC 数据结构包括:1、 nc.vo.pub.CircularlyAccessibleValueObject循环访问
8、VO,是由属性和取值成对组成的 集合,提供了根据属性获得/设置值的方法,是单据和报表模板采用的主要结构;2、 nc.vo.pub.ValueObject普通 VO,包含多个属性及每个属性的 getter 和 setter 方法,是 业务组主要数据结构的父类;3、 com.borland.dx.dataset.StorageDataSet存储数据集,由元数据和内容数据两部分组成, 元数据(Column)描述了各列的信息,内容数据描述了一个二维的数据集合,当游标 指向内容数据的某行时,可以获得该行指定列的数据,用于查询引擎;4、 nc.vo.pub.rs.MemoryResultSet内存结果集,
9、同样由元数据和内容数据组成,其中元 数据(MemoryResultSetMetaData)描述各列信息,内容数据(ArrayList)描述了一个二 维数据集合,可以直接访问其任何元素,目前被一些业务算法使用;5、 Object,Vector,ArrayList这些都是 JDK 的常用结构,均可存储二维数据。报表的展现模型通常包含以下信息:1、 控件(核心控件是表格)属性和布局;2、 控件显示内容与显示规则(绑定数据、参数、行列格式、界面资源等);3、 控件连动规则;4、 数据处理规则(定位、排序、过滤、统计、公式、交叉、钻取等);5、 动态扩展规则;6、 输入输出控制(待定参数设置,打印,导出
10、等)第 3 页2.2数据字典NC 数据字典提供了统一的数据建模平台,支持对各种数据库对象进行管理,维护这些物理 对象的逻辑属性,并向外系统提供访问数据库逻辑信息的接口。以查询引擎为例,查询对象 的定义是基于数据字典进行的,而这份数据字典来自查询对象所指定的数据源。由于多数报 表的列与业务数据库的字段存在某种对应关系,因此数据字典的存在有助于提高查询定义的 直观性和易用性。NC 数据字典通常在安装产品时候由系统生成,如果想自己为某些数据库对象生成字典,可 以采用数据字典管理界面提供的导入方法。导入方式包括三种(详细操作可参见数据字典 导入说明):1、 解析 PDM 文件(xml 格式);2、 解
11、析 NC 标准建库脚本;3、 提取数据库元数据;如果需要给非 NC 数据库(比如用户采用的第三方数据库)生成数据字典,可以利用 PowerDesigner 提供的逆向工程功能将库里的物理表生成 PDM 文件,修改其中表和字段的 中文名称,然后以 xml 文件格式存储,再使用上述第一种方法导入。第 4 页2.3业务系统集成对于直接使用查询引擎开发出的报表,可以使用以下两种方式挂接到业务组的功能节点。强 烈建议把准备挂接节点的查询对象和格式对象的编码设为与业务系统相关的有意义字符串, 以避免不同业务系统预置对象互相覆盖的危险性。报表管理节点挂接法:1、 注册功能节点,类名为 nc.ui.pub.q
12、uerymodel.QueryMainUI_N;2、 下挂一个参数,参数名为 folderId,参数值为客户化下查询引擎管理中相关报表目 录的 ID(可从数据库表 pub_formatmodeldef 的 id 字段查出)。独立报表节点挂接法:1、 注册功能节点,类名为:nc.ui.pub.querymodel.QueryNodeUI:2、 下挂两个参数:pkQryNode界面模型对应的编码(可从查询引擎管理界面读取),dsName查询定义所在数据源。对于高开发难度模式的报表,则与普通功能节点一样挂接 ToftPanel 的子类即可。第 5 页第二章 低开发难度报表1.概述本手册列举的低开发难
13、度报表模式统一由查询引擎(V3 版本)提供解决方案。查询引擎是 一个面向高级实施人员和普通开发人员的查询建模产品,延续并完善了自定义查询体系的技 术路线,在全面支持复杂查询的设计和个性化的报表展现的同时,大幅度降低了报表开发人 员的编码工作量和专业技能要求。我们再来看一下查询引擎的适用性和不适用性。查询引擎长期作为一个查询工具发展,因此 尤其适用于与数据库查询分析或数据挖掘关系密切的报表开发,同时也支持程序员调用服务 器端代码对数据进行业务处理。另一方面,自定义查询体系与模板体系存在一个很大的不同, 模板体系在发布产品之前已经由程序员录入了大量初始化数据,因此不同用户能够分配到不 同的查询模板
14、、报表模板和打印模板,而自定义查询体系是完全自定义的实时开发,没有模 板的预制数据,因此在一个时刻只支持一种参数控制样式、一种报表界面样式和一种打印样 式(或直接打印),但这些样式均可在设计态修改。在展现上,由于查询引擎使用的是 SWING 的表格控件,因此对一些 EXCEL 风格的需求支持不够,这个薄弱环节将在 V31 得到加强。 总体来说,V3 版本的查询引擎暂不适用于以下两类报表开发:1、 有多模板分配需求的报表,或对打印有高度要求的报表;2、 存在表体合并单元格的报表。查询引擎的查询模型(数据模型)设计如下:查询模型流程如下所示(设计态/运行态):第 6 页界面模型(展现模型)设计如下
15、:第 7 页界面模型流程如下所示:本章共介绍了五大类报表的十五种开发模式。尽管这些模式之间存在相当差异,但是针对以 前我们发现的一些用例杂乱导致的培训效果问题,本章的所有范例集中面向两个业务应用(单位费用统计和部门人事统计),即用不同方案解决相似问题,以便于读者从中领会和比 较这些模式的原理、特点和适用性。希望这种做法不会给读者造成一个误导:查询引擎只能 解决这两类报表的应用。2.查询类报表查询类报表指通过一个或多个 SQL 查询结果形成的二维数据展现出来的报表,由于 SQL 的 语法特点,此类报表通常具有固定的列结构和动态的行结构,但模式 2.3 也探讨了一种根据 参数动态改变查询列结构的方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 NC 报表 开发 手册

限制150内