NCV-自由报表红皮书_第1页
NCV-自由报表红皮书_第2页
NCV-自由报表红皮书_第3页
NCV-自由报表红皮书_第4页
NCV-自由报表红皮书_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自由报表技术红皮书NC-UAP 6.0用友NC-UAP2021-11-201第 页目 录第一章前言11.背景12.入门12.1自由报表的新建12.2自由报表的格式设计42.3语义模型的使用62.4可扩展区域82.5数据预览功能132.6分析功能153.小结18第二章基本功能181.可扩展区域管理182.排序223.筛选234.固定成员245.分组276.分组统计287.排名函数318.TopN分析339.交叉38第三章分析功能综合应用411.分组功能应用411.1列表中的多级分组421.2交叉表结合分组应用452.数据依赖处理区域拼接46第四章报表发布节点481.报表发布482.发布后节点49

2、第五章穿透和联查501.报表穿透502.报表联查512.1接口TraceDataInterface512.2注册方式522.3联查的执行522.4工具方法52第六章报表节点的扩展531.查询动作扩展532.查询条件553.区域条件564.业务格式575.格式调整器596.工具方法60第七章辅助开发工具621.手工导入导出622.安装盘脚本632.1构造平台中支持自由报表(以及语义模型)的脚本导出632.2发布的报表节点导出633.安装程序64第 64 页第一章 前言1. 背景为满足各类用户在报表分析方面的综合要求,NC报表产品IUFO从5.5版本开始提供了一个分析型报表的解决方案:自由报表。本

3、文针对V6自由报表功能进行介绍,但是使用了部分5.6版本的产品截图,后续会逐步替换。自由报表具有以下特点:1 针对企业不同业务角色,提供多样使用方式:报表数据查询人员可以在报表数据查询结果上直接构建分析型报表,而不需具备较深技术背景;专业的分析报表设计人员则可以全面使用设计功能实现复杂报表的定义和发布;2 支持多种数据来源:系统内置报表数据提供者和多种语义模型提供者,还支持注册其他类型语义模型提供者,多来源数据都可以在一张自由报表中进行数据分析和展现;3 报表支持多区域模型,多个区域按照数据分析结果各自动态展开;多区域和多数据来源之间均可以设置依赖关系,能灵活组合拼装出各类样式的复杂报表;4

4、格式设计和报表展现效果一致:各种数据分析和格式设置都在设计界面有直观展现,特别是交叉表的设计方式突破以往,能够可视化的直接定义维度指标及各类展现效果;5 提供了分析图表功能:提供了各类常见图表分析功能;6 分析功能和交互性加强:全面支持排序/过滤/分组/统计/交叉/排名函数/TopN等分析功能,并具有页维度和待定参数等交互特性。7 支持数据追踪:自由报表中的明细数据和统计数据都支持追踪到原始数据。8 针对大数据量的处理:利用数据库的处理能力进行多级汇总数据的处理,展现层在电子表格中实现平滑分页,可以分页加载明细数据。2. 入门使用自由报表的基本流程介绍。2.1 自由报表的新建1) 选择自由报表

5、功能节点,就会出现如下界面:2) 接下来我们选中左面目录树中的一个目录,选择工具栏上的“新增”,如下图:3) 报表卡片界面中填写“自由报表名称”、“自由报表编码”,如下图:4) 点击工具栏中“保存”之后,该目录下的报表列表中就会出现刚才新建的报表,如下图:2.2 自由报表的格式设计1) 在自由报表界面选中需要格式设计操作的报表, 点击工具栏中的“格式设计”如下图:2) 报表的“格式设计”主界面如下:3) 主界面中主要包含菜单、工具栏、自由报表导航区域、数据显示区域以及语义模型视图等部分。如下图:2.3 语义模型的使用1) 点击“数据集视图区域”上方的工具栏中的“插入语义模型”,出现选择语义模型

6、界面,如下图,选中已经定义好的语义模型“user”。2) 点击“确定”,报表设计界面的语义模型信息框中就会出现被选择的语义模型,如下图:2.4 可扩展区域1) 可扩展区域是为了放置语义模型的区域,有两种定义方式,一种是选中一定区域,然后右键菜单中选择“设置可扩展区域”,如下图:2) 可扩展区域定义界面如下图,填写相应的信息。3) 点击“确定”之后,数据显示区域就会出现此可扩展区域,如下图:4) 拖动右面语义模型信息框中语义模型的元数据,放入设置的可扩展区域中,如下图:5) 设置可扩展区域的另一种方式:直接拖动右面语义模型信息框中的语义模型,放入数据显示区域,如下图:2.5 数据预览功能1) 定

7、义完可扩展区域,并且放置语义模型之后,就可以对数据进行查看了,点击工具栏中的“预览”按钮,如下图:2) 点击“预览”之后,数据就会显示在数据显示区域,如下图:2.6 分析功能以排序功能为例,介绍分析功能的使用方法1) 选中可扩展区域中的某一元数据,然后选择工具栏上的数据分析功能按钮,如下图:2) 点击工具栏中的“排序”,数据显示区域显示如下:3) 点击“预览”,会看到数据按升序来显示,如下图。如果此时保存了报表格式,则报表浏览时也会按照此排序设置进行报表数据展开。3. 小结自由报表基于语义模型,以电子表格的方式进行报表格式设计,并可以设置各种分析功能。在报表浏览状态依然可以更改各类分析功能,达

8、到实时交互分析数据的效果。第二章 基本功能1. 可扩展区域管理下面详细介绍可扩展区域的定义,拆分,合并,移动,复制,删除等管理介绍。1 定义可扩展区域选择一个区域,右键à设置可扩展区,即可定义个可扩展区。各设置项说明:可扩展区名称:用于标识和区分各可扩展区,为空时系统默认名称为其扩展区域。可扩展区域:标记可扩展区在自由报表中的区域。扩展方向:标记区域是横向扩展还是纵向扩展。限定区域大小:当选择“固定大小”时,可通过“限定行数”和“限定列数”来限制可扩展区扩展后的区域大小。扩展依赖:定义当前区域扩展时依赖的可扩展区域以及依赖扩展点。依赖具体规则参见2.2扩展规则介绍部分的扩展依赖介绍。

9、2 拆分可扩展区域定义好可扩展区域后,可以对可扩展区域按行或按列进行区域拆分,将当前可扩展区拆分成两个可扩展区域。3 合并可扩展区域选中两个或两个以上的可扩展区域,可以对这多个可扩展区域进行区域合并,可以指定新合并区域的名称,并指定要合并到主合并区域,用于可扩展区模型的处理。4 管理可扩展区域右键à管理可扩展区域,用于快速管理多个可扩展区域,包括添加,修改,删除等管理功能。5 移动可扩展区域可通过修改可扩展区域的区域设置来进行区域移动,也可以直接剪切然后粘贴来移动可扩展区域。 6 复制可扩展区域全选可可扩展区域,然后复制,粘贴即可完成可扩展区域的复制粘贴。可以用ctrl+c, ctr

10、l + v进行快速操作。2. 排序可以针对某个扩展区域中的语义模型设置多个排序字段,支持设置排序字段的升降序。Ø 在排序字段上显示升序或降序标记,重复点击按照升序、降序、取消排序的顺序依次变化。Ø 多个排序字段时按照从上至下,从左至右的顺序确定排序次序。Ø 若有分组,则在组内排序,对分组字段也可以排序,也可以按照分组统计字段进行排序排序前:排序操作按钮排序前排序后:排序后的结果3. 筛选可以针对某个扩展区域中的语义模型设置筛选,支持使用语义模型的待定参数, 给参数设置默认值,在数据态下可以重新设置筛选条件值。支持页维度。Ø 根据选定的扩展区,设置筛选条件

11、,筛选条件作为单独的功能,在格式态和数据态下都可以使用。Ø 语义模型的待定参数可以针对使用语义模型的区域设置默认值。Ø 参数值设置与筛选条件作为两个菜单项,在数据态和格式态都可以使用。在从格式态切换到数据态时以及打开报表预览数据时自动出参数值设置界面。Ø 支持从语义模型中拖拽字段到页头形成页维度,页维度相当于给所有使用了与页维度相同语义模型的区域设置了筛选条件。Ø 语义模型设置的待定参数与扩展区域的筛选条件以及页维度一起筛选数据。图例如下:第一步:点击“筛选条件”第二步:增加一条筛选条件浏览数据:数据已经按条件进行了过滤4. 固定成员对于自由报表的数据展

12、现,我们还提供了一种叫做“固定成员”的功能。当对某个字段设置固定成员后,顾名思义就是在数据展现的时候会按照该字段设置的几个固定的成员和其顺序来展现数据。其类似于筛选(如同SQL中的in)但又不同于筛选,如果查询的数据中没有固定成员中某个成员,在展现的时候仍然会出现该固定成员,只不过其他的字段没有记录而已。比如用户希望只展现单位1、单位2、单位3的数据,那么就可以通过对单位设置固定成员来实现用户希望看到的数据。固定成员的设置过程如下:1、打开任意的一张自由报表,选中扩展区域中的任何一个字段,在工具栏中选择“固定成员设置”按钮,可对所选择的字段进行固定成员设置。如下图1 图12、如下图2是固定成员

13、设置的对话框。当用户选中“固定成员”复选框后就可以对所选择的字段设置固定成员了。用户可通过“添加”、“删除”按钮增加和删除固定成员,同时可以通过“读取数据”按钮装载数据库中存在的所有成员;通过“向上”、“向下”按钮调整固定成员的顺序,同时可以通过固定成员列表的表头来对固定成员进行排序,点击“成员”表头就会按成员值进行排序,点击“显示名称”表头就会按成员显示名称进行排序;可以编辑成员的显示名称来改变成员在数据展现的时候的显示名称。 图23、设置完固定成员后,在自由报表中浏览出的数据就仅仅含固定成员的数据记录,如果数据库中没有某个成员的记录就会出现空行(下图的302单位的数据就是),如下图3。 图

14、34如果想取消字段的固定成员设置,可在固定成员设置对话框中重新选中“默认成员”复选框,就取消了固定成员设置。如图4、图5图4 图55以上演示的是普通的行列表的字段的固定成员的设置,交叉表纬度的固定成员设置是相同的操作。注意:1、 不能对统计字段(一般是数值型的字段)设置固定成员2、 如果设置固定成员的时候修改了成员的显示名称,然后又取消了固定成员设置,但是设置的显示名称仍然会生效,除非在默认成员设置列表中将该成员与显示名称记录删除。5. 分组可以针对某个扩展区域中的语义模型设置分组,支持多个分组字段,支持分组统计字段,支持分组内细节数据的交叉。1) 在一个扩展区域内,如果设置分组字段,则根据分

15、组字段,将数据分组。如果有2个以上的分组字段,则根据分组字段所在的位置确定分组次序,处于最外层的字段作为第一分组顺序。如果多个分组字段在1行,则根据多个分组字段的组合值分组。2) 可指定放置在区域中的语义模型字段为分组字段; 3) 可在扩展区域的单元中直接定义分组统计函数(会隐含确定一个分组字段),支持的统计函数列表:求和、计数、平均、最大、最小;4) 设置了多个分组字段时,按照它们放置的位置从上到下、从左到右,作为其分组顺序;5) 分组字段和统计函数可以指定是否自动合并单元分组操作的界面如下:分组操作按钮分组前分组后:分组操作后6. 分组统计自由报表的分组统计,就是对自由报表的分组数据进行统

16、计分析,分为合计、计数、平均、最大、最小五种类型。1、 建立自由报表,进入格式设计,创建行列区。2、 然后对扩展区进行分组:3、 将字段拖入扩展区,插入统计函数:其中,合计、平均是针对数据型,对分组数据进行求和和求平均值;计数是对分组数据进行进行数目统计,最大和最小是对求分组数据的最大值和最小值。4、 数据预览,计数函数:7. 排名函数排名函数用于计算出某个报表数据在指定范围内的排名。自由报表在多级分组区域中支持对明细数据字段或者分组统计字段计算排名。1 排名函数的设置此功能按钮位于工具栏中,如图1-1所示。图1-1图1-2设置界面如图1-2,“从大到小”表示按照数据从大到小进行排名;“允许并

17、列”表示数据大小相同时排名相同;“排名范围”可以在语义模型的字段中进行选择,如果选择了某个分组字段,则表示在此分组级次中进行排名,如果非分组字段或者不选择,则为所有数据范围内进行排名。2 明细字段的排名函数图2-1是自由报表的格式设计界面,我们选中F4单元的“货币资金”字段,将其设置为排名函数(设置内容同图1-2)。图2-1图2-2图2-2是报表浏览效果,F列就是计算出的货币资金在单位范围内的从大到小排名。如果设置了“允许并列”,并且将排名范围设置成空(所有数据范围内排名),则报表效果有所变化,见图2-3:图2-33 分组统计字段的排名函数如图3-1,我们也可以将按单位统计的货币资金小计(F5

18、单元格)设置为排名函数,这次我们设置的是从小到大进行排名。图3-1报表浏览效果见图3-2,红色字体的就是货币资金单位小计的排名。图3-28. TopN分析TopN分析是一种常见的报表数据分析功能,可以按照数据大小过滤出前N行用户最关注的业务数据。自由报表在多级分组区域中支持TopN分析功能,在明细数据字段或者分组统计字段上均可设置。1 TopN分析的设置此功能按钮位于工具栏中,如图1-1所示。图1-1图1-2设置界面如图1-2,“数据分析行数”表示用户关注的数据行数;可选择数据排列方式;“补足行数”的意思是当数据不足时,是否要用空数据补足数据分析行数,这个设置有助于报表结果的工整和美观;设置“

19、显示“其他”表示多于分析行数的数据会进行汇总并显示为“其他”行。设置完成后,在所设置的单元格的右上角会显示topN标记:图1-32 在明细数据中设置了TopN分析的效果图2-1是自由报表的格式设计界面,我们选中“货币资金”字段,为其设置TopN分析(设置内容同图1-2)。图2-1图2-2图2-3我们对比一下设置前后的报表浏览效果(分别是图2-2和图2-3),可以发现,货币资金值最大的前3行数据依然显示,而其他数据行汇总后显示成了一行数据。3 分组报表中明细数据设置TopN分析的应用效果这一次,我们对数据按照单位编码进行分组,图3-1显示区域中已经设置单位编码字段为分组字段。图3-1图3-2图3

20、-3我们再来对比一下设置前后的报表浏览效果(分别是图3-2和图3-3),可以发现,每个分组内部货币资金值最大的前3行数据依然显示,而其他数据行汇总后显示成了一行数据。如果我们在TopN分析中选择“补足行数”,就会发现报表变得非常工整了,见图3-4:图3-44 分组报表中对小计字段设置TopN分析的应用效果可扩展区域中已经设置了按照单位编码进行分组,如图4-1所示。我们对按单位统计的货币资金小计(D5单元格)设置TopN分析,为了数据对比方便,这次的分析行数设置为2。 图4-1图4-2图4-3我们再来对比一下设置前后的报表浏览效果(分别是图4-2和图4-3),单位货币资金小计值最大的前2个分组数

21、据依然显示,而其他分组数据小计汇总后显示成了一行数据。5 需要注意的规则为了用户设置方便,我们并不限制设置TopN分析的字段个数。但是实际上在每个分组级次中,只有检测到的第一个TopN分析生效。例如图2-1中的一个普通列表,如果对后面的4个字段都设置了TopN,最终的报表展示也是图2-3的效果,系统会将统一级次的其他TopN分析自动置成不启用。9. 交叉交叉表制作一般流程:1) 选定合适的区域设置成扩展区域;2) 将语义模型中的数据通过拖拽操作放置在设置好的扩展区域中的相应位置;3) 根据需要选择适当的交叉点设置交叉区域;4) 设置好交叉表后进行数据的浏览;1 扩展区域的设置选中区域鼠标右键点

22、击设置可扩展区域,如下图:点击确定如下图所示2 扩展区域字段的设置将语义模型中的字段通过拖拽操作放置在设置好的扩展区域中的相应位置如下图:3 交叉区域字段的设置选中扩展设置好的扩展区域进行交叉区域的设置,如下图:A1:C5为交叉区域、B2 及货币资金为交叉点、B2:C5为指标区域,交叉点相当于行列维度坐标轴的原点(交叉区)4 进行交叉区域数据的浏览点击浏览后数据展现如下图,同一单位同一年度不同月份的合计值 第三章 分析功能综合应用自由报表还支持设置区域之间的数据依赖关系,各种分析功能结合起来,灵活应用就可以组装出较为复杂的报表。1. 分组功能应用分组常见的应用有两种,一是对列表中的分组应用;二

23、是对交叉表结合分组应用。1.1 列表中的多级分组1) 如下一组数据(图1),直接预览时数据就是自由展现,那么用户就需要对数据利用单位名称、币种、会计期间等字段进行一些分组加工以便能让更容易对数据进行分析比较。 图12) 首先我们先对单位名称字段设置分组,那么数据按单位进行分组,并且得出按单位分组合计值 图2 图33) 在单位下还有币种和会计期间字段,可以根据需要再设置分组,对数据继续细化(图4、图5)。 图4 图54) 另外一种格式展现效果如下(图6)是1单位2009年3月的销售清单,为了更直观的掌握销售情况可以进行如下多层分组(图7)。 图6格式设计如下: 图7数据展现如下(图8): 图81

24、.2 交叉表结合分组应用图1中的数据用交叉表展示时,分组也可以和交叉表结合在一起使用(图9) 图9展示如下: 图102. 数据依赖处理区域拼接用户可能会需要设计一些较为复杂的统计表,例如数据来源于不同的系统,或者对于数据有不同的统计口径,而这些数据又要集中体现在一张统计报表中。V5.5之前的产品,如果用户想处理复杂数据,只能利用查询引擎的功能,做数据表的关联或者定义复合查询,然后才能把一个查询引入到报表中来。查询的设计太过复杂,针对一个查询的报表设计的灵活性和直观性又都比较差。V55自由查询中使用多个可扩展区域的数据依赖功能解决了这个难题。交叉表是一种常用的报表统计样式。自由报表中交叉表的设计

25、比较直观:在一个可扩展区域内,可以拖入行列维度字段和设置统计指标,并可以直接设置各类指标名称和单元格式。还可以设置是否显示行列标题。由此,对于复杂的统计报表,我们给出的解决方案是:根据报表数据内容,将其拆分成多块,这样每一块的数据来源单一且统计口径简单。每一块都可以利用一个可扩展区域来设置,而各块之间,只要通过设置数据依赖关系,并且选择性地隐藏某些块的行列表头,就能使这些数据对应起来,最终拼接成一个无缝复杂报表。交叉表如图3-01,单个交叉表的设计界面比较直观。图3-01 交叉表的设计界面图3-02是交叉表的数据浏览结果。图3-02 交叉表展开效果复杂报表的拼接如图3-03,设置两个交叉表,并

26、设置其数据依赖关系,同时设置右边的区域“不显示行表头”。数据依赖关系的内容是(地区名称 依赖于 区域1.地区名称 客商名称 依赖于 区域1.客商名称)图3-03 两个区域设置数据依赖关系如图3-04,这样的两个交叉表最终浏览结果看起来就是一个统计表啦。图3-04 拼接的展开效果第四章 报表发布节点1. 报表发布在自由报表管理功能中,可以对设计好的自由报表进行“发布节点”,对于第一次发布的节点,可以在发布向导中同时进行功能和菜单的设置。如果希望将多张自由报表继续发布到同一个功能节点,则可以选择“追加”方式,然后选择一个已有节点进行发布即可。发布设置界面如下:2. 发布后节点自由报表发布后的节点成

27、为一个普通NC功能,功能注册、菜单注册和功能权限控制都是NC统一机制管理的。这个节点我们一般称之为一个报表节点。报表节点中的多张报表共用查询条件,这意味着查询条件或者查询方案的变化会作用到本节点的所有报表上面。报表节点的典型界面如下:报表节点的主要交互方式:Ø 打开节点节点内所有报表在右边以多页签形式打开,显示报表基本格式,但是不加载报表数据。Ø 点击查询根据节点的查询模板配置等内容,如果有查询条件输入界面,则弹出界面供用户设置。根据查询条件进行报表数据的加载和显示。Ø 选择查询方案对于左侧面板显示的用户已保存的查询方案,鼠标点击时直接按照查询方案内容进行报表数据

28、加载和显示。Ø 切换报表页签按照当前的查询条件/查询方案内容,进行对应报表数据加载和显示。第五章 穿透和联查1. 报表穿透自由报表穿透是指按照用户在报表格式中设定的穿透规则,进行关联报表的数据查看。报表穿透暂时没有提供业务扩展机制。目前支持两种方式:穿透到单张自由报表直接浏览;穿透到自由报表发布后节点。2. 报表联查报表联查是根据业务需要进行当前报表的关联数据查看等动作,这是一个业务扩展机制,需要业务产品根据扩展机制进行联查功能的开发。2.1 接口TraceDataInterfacepackage nc.pub.smart.tracedata;/* * 业务联查接口,由业务组根据具体

29、业务去实现* * author wanyonga * */public interface TraceDataInterfaceITraceDataOperator provideTraceDataOperator();联查操作接口ItraceDataOperator主要方法有:/* * 业务联查菜单下注册菜单项的名字 * * return */public String getMenuItemName();/* * 扩展追踪动作 * * return */public Action ctreateExtensionActions();/* * 执行业务联查 各业务模块根据需求执行联查操作 *

30、 * param container * 联查过程中弹出对话框等需要的父组件。 * param param * 联查参数 */public void traceData(Container container, TraceDataParam param);2.2 注册方式业务模块需要首先将接口TraceDataInterface的实现类注册到iufo_tracedataregister表中。然后在“报表平台-分析建模-语义模型管理”节点中,为已经建立的语义模型配置联查接口实现类。2.3 联查的执行报表节点中,如果引用的语义模型中配置了联查接口实现类的话,会在联查菜单下出现具体业务联查菜单项,每

31、个菜单项会调用到对应的联查动作Action。2.4 工具方法在报表节点内进行报表切换,可使用报表平台提供的工具方法:public class FreeReportFuncletUtil /* * 在发布后节点内切换报表显示 * * param container * param reportID * param drillParam * return */public static boolean showReport(Container container, String reportID, FreeReportDrillParam drillParam) l 方法参数说明:Ø C

32、ontainer container:父窗口。Ø String reportID:目标报表的id。Ø FreeReportDrillParam drillParam:自由报表打开时的穿透参数。穿透参数是自由报表进行报表数据加载的一种参数条件。在报表执行的时候,如果发现上下文中有报表穿透参数,则会执行查询交互接口IQueryAction的doQueryByDrill方法。此方法具体内容详见第六章的扩展机制介绍。如果需要打开另一个报表节点,则推荐使用下面的工具方法:public class FreeReportFuncletUtil /* * 通过联查参数打开报表节点中的指定报

33、表 * * param funcode * param initData * return */public static boolean openReportNode(String funcode, FuncletInitData initData) l 方法参数说明:Ø String funcode:目标节点的功能编码。Ø FuncletInitData initData:这是UAP封装的打开节点时的初始数据对象。对于报表节点的打开,要求这个FuncletInitData对象的initData属性实现IReportNodeInitData接口,便于从中获取穿透参数:/*

34、 * 自由报表发布节点的初始数据对象接口,用于传递报表穿透参数*/public interface IReportNodeInitData /* * 返回自由报表通用的穿透参数 * * return */public FreeReportDrillParam getReportDrillParam();第六章 报表节点的扩展除了上面介绍的联查外,报表节点支持以查询菜单的动作为入口的一系列业务扩展机制。1. 查询动作扩展查询动作接口为:nc.ui.iufo.extend.IQueryAction,主要完成查询菜单和查询方案等界面交互功能。其实现类应该在client中。报表平台提供了此接口的默认实

35、现:nc.ui.iufo.freereport.extend. DefaultQueryAction。/* * “查询”交互的扩展 */public interface IQueryAction public static final String KEY_IQUERYACTION = IQueryAction.class.getName();/* * “查询”菜单的执行动作 * * param parent * param context * param reportModel * param oldCondition * return */public abstract IQueryCon

36、dition doQueryAction(Container parent, IContext context, AbsAnaReportModel reportModel,IQueryCondition oldCondition);/* * 查询交互的对话框,需要从中获取查询方案面板 * * param parent * param context * param reportModel * param oldCondition * return */public abstract QueryConditionDLG getQueryConditionDlg(Container parent

37、, IContext context,AbsAnaReportModel reportModel, IQueryCondition oldCondition);/* * 根据指定查询方案进行查询 * * param parent * param context * param reportModel * param queryScheme * return */public abstract IQueryCondition doQueryByScheme(Container parent, IContext context, AbsAnaReportModel reportModel,IQue

38、ryScheme queryScheme);/* * 根据外部送入的穿透参数进行查询 * * param parent * param context * param reportModel * param drillParam * return */public abstract IQueryCondition doQueryByDrill(Container parent, IContext context, AbsAnaReportModel reportModel,FreeReportDrillParam drillParam);/* * 页维度过滤的事件处理 * * param pa

39、rent * param context * param reportModel */public abstract void doPageDimFilter(Container parent, IContext context, AbsAnaReportModel reportModel);2. 查询条件查询扩展中查询交互、按方案查询和按穿透参数查询三个方法的返回值都是查询条件nc.itf.iufo.freereport.extend.IQueryCondition。报表执行过程中会使用此查询条件,并将其放在上下文中进行传递。例如语义模型执行时就可以使用键值FreeReportContext

40、Key. KEY_IQUERYCONDITION从上下文中获取此条件对象。此接口的实现类应该在public中。报表平台提供了此接口的默认实现:com.ufida.report.anareport.base. BaseQueryCondition。/* * “查询”交互返回的条件 * */public interface IQueryCondition extends Serializable, Cloneable /* * 是否继续本次查询 * * return boolean */public abstract boolean isContinue();/* * 返回针对各个区域的条件设置

41、* * param areaName 报表扩展区域名称 * param smartModel 引用的语义模型 * return IAreaCondition */public abstract IAreaCondition getAreaConditions(String areaName, SmartModel smartModel);/* * 返回报表格式模型的调节器 * * return IReportAdjustor */public abstract IReportAdjustor getReportAdjustor();/* * 返回业务逻辑对报表单元格式(包括精度)的处理器 *

42、* return IBusiFormat */public abstract IBusiFormat getBusiFormat(String areaName, SmartModel smartModel);3. 区域条件自由报表中语义模型的执行是以扩展区域为单位的,所以查询条件中需要针对每个扩展区域获取其语义模型执行条件。此接口的实现类应该在public中。报表平台提供了此接口的默认实现:com.ufida.report.anareport.base. BaseAreaCondition。/* * 为报表中各个区域设置的“查询”条件 * */public interface IAreaCo

43、ndition /* * 返回额外设置的语义模型描述器数组,包括:排序、筛选、汇总等 * return Descriptor */public abstract Descriptor getAllDescriptors();/* * 返回外部设置的报表区域参数数组 * return Parameter */public abstract Parameter getParameters();4. 业务格式业务格式接口nc.itf.iufo.freereport.extend.IBusiFormat, 用于实现业务逻辑对报表数据的特殊格式要求。此接口的实现类应该在public中。/* * 业务逻辑

44、对报表格式的处理接口 * */public interface IBusiFormat public static int BUSIFORMAT_TYPE_NONE = 0;/ 没有业务格式public static int BUSIFORMAT_TYPE_COLUMN = 1;/ 整列(字段)使用同样的业务格式public static int BUSIFORMAT_TYPE_ROW = 2;/ 业务格式和行数据相关/* * 返回报表区域中,指定语义模型字段的业务格式类型,请使用本接口的常量定义 * * param areaPK * param smartID * param fldName

45、 * return */public abstract int getFormatType(String fldName);/* * 返回指定字段的整列精度,如果不需要重新指定则请返回TableConstant.UNDEFINED * * param areaPK * param smartID * param fldName * return */public abstract int getColumnDigital(String fldName);/* * 根据行数据返回指定字段的精度,如果不需要重新指定则请返回TableConstant.UNDEFINED * * param area

46、PK * param smartID * param fldName * param rowData * return */public abstract int getDataDigital(String fldName, IRowData rowData);/* * 返回字段新的整列格式 * * param areaPK * param smartID * param fldName * param oldFormat * return */public abstract IFormat getColumnFormat(String fldName, IFormat oldFormat);

47、/* * 根据行数据返回字段对应新的单元格式 * * param areaPK * param smartID * param fldName * param rowData * param oldFormat * return */public abstract IFormat getDataFormat(String fldName, IRowData rowData, IFormat oldFormat);5. 格式调整器格式调整器接口nc.itf.iufo.freereport.extend.IReportAdjustor, 用于实现根据查询条件动态更改报表格式的要求。但是一旦业务代码

48、进行了格式调整,意味着用户自己定义的报表格式一定会有损失,请慎重使用。此接口的实现类应该在public中。/* * 自由报表格式模型调节器 */public interface IReportAdjustor /* * 进行单个扩展区域的格式模型调整 * * param context * param areaPK * param reportModel */public abstract void doAreaAdjust(IContext context, String areaPK, IAreaCondition areaCond, AbsAnaReportModel reportMod

49、el);/* * 进行报表格式模型的调整 * * param context * param reportModel */public abstract void doReportAdjust(IContext context, AnaReportModel reportModel);如果业务逻辑需要对报表数据进行再加工处理,则可用上面的格式调整器同时实现报表数据调整接口nc.itf.iufo.freereport.extend.IReportDataAdjustor。/* * 自由报表数据模型的业务代码扩展 * */public interface IReportDataAdjustor e

50、xtends IReportAdjustor /* * 进行交叉表头的处理 * * param context * param areaPK * param reportModel */public abstract CrossTableModel doAdjustCrossHeader(String areaPK, IContext context, CrossTableModel crossTabel,AbsAnaReportModel reportModel);6. 工具方法格式调整器中如果需要设置报表格式,建议使用报表平台统一提供的工具类:/* * 区域内容设置工具类 */public

51、 class AreaContentSetUtil /* * 根据区域内容设置重新设置扩展区 * * param areaContentSet * param anaModel * return */public static boolean resetExCellByAreaContent(AreaContentSet areaContentSet, AbsAnaReportModel anaModel) ;/* * * 将扩展区域的语义模型参数增加为报表参数,并设置该扩展区域参数的值取新报表参数的值. * * param areaname扩展区域名称 * param anaModel报表模

52、型 * param doSetParamValue是否设置该扩展区域参数的值取新报表参数的值 * return */public static boolean addReportParameter(AbsAnaReportModel anaModel,boolean doSetParamValue) ;/* * 根据交叉区内容设置重新设置交叉区 * * param crossAreaContentSet * param anaModel * return */public static boolean resetCrossAreaByCrossAreaContent(CrossAreaContentSet crossA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论