1. 概述
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 应用场景
系统的开发和建设,必须要有统一的报表开发规范。
统一的开发规范,可以将一部分场景问题的排查手段前置,让用户在开发阶段就可以规避部分问题。
1.3 功能简介
本文主要针对设计器使用、报表命名、功能实现方法、报表UI设计四个模块,提供推荐的报表开发规范。
希望用户能够参照本文,系统地进行报表开发和展示。
注:本文仅作为一个推荐示例,不强制要求必须完全按照本文进行开发,请用户结合自身实际情况调整。
2. 设计器使用规范
项目 | 规范 |
---|---|
分离开发 | 1. 每一张模板的制作应当经历三个步骤 开发环境:首先在开发环境(设计器)开发,修改,内部测试通过。 测试环境:然后发布到测试环境供业务人员测试,关键用户测试通过。 生产环境:最后发布到生产环境,供最终用户使用。 |
2. finedb数据库 开发环境、测试环境、生产环境使用的finedb数据库必须分离开 开发环境和测试环境使用生产环境上的finedb数据库的副本 | |
3. 数据连接的数据库 非填报报表:报表使用的业务数据库,除了填报报表外,三个环境可以连同样的库,因为只是取数据出来展现,不会涉及到数据库表的增删改。 填报报表:填报报表使用到的数据库表,开发环境、测试环境、生产环境,需要区分开来,因为在开发测试过程中会涉及数据的增删查改,报表未上线之前,不建议使用生产环境的数据库表来调试。 | |
远程设计 | 1. 模板开发过程中,在保证Jar及插件版本与服务器一致的前提下,尽量远程设计。 远程设计使用方法请参考:远程设计 |
2. 远程设计连接的目标服务器需要授权远程设计功能点,否则远程设计无法使用。 | |
3. 设计器和服务器的jar包和插件版本需要保持一致 | |
4. 远程设计前保证服务器的端口对外开放,开发人员能通过浏览器正常访问决策平台。 内网通过vpn连接远程设计时,需要检查网络是否通、vpn权限是否正常。 | |
5. 协同开发过程中,注意分配账号及权限,开启报表角色权限控制。 远程设计的权限区别于平台的模板权限控制,需要管理员给开发人员分配相关的模板及数据连接远程设计权限,否则切换远程设计报错用户名密码错误。 具体设置方法请参见:给用户分配远程设计权限示例 | |
6. 启用 https 或修改 https 配置(证书路径、https 密钥),必须重启设计器才能生效。 | |
协同开发 | 1. 协同开发或模块开发过程中,需保证UI风格相对一致,配色可以使用设计器的预定义配色去控制。 详情请参见:图表预定义配色 |
2. 协同开发或模块开发过程中,报表中有多个组件、控件时,需保证组件命名的一致性、规范性。 | |
模板备份 | 1. 整体备份模板 手动备份整个工程文件,或者在决策平台开启自动备份或者手动备份。 开发时,在开发环境、测试环境,开启自动备份,默认备份路径为../backup,备份文件存储在工程的%FR_HOME%/webapps/webroot/backup文件夹下。 用户可修改 backup 文件夹为其他文件夹,但是不支持保存到非工程路径下。 需要定期将备份文件移动到其他服务器或者其他目录,避免大量的备份文件导致应用过大,以及一台服务器出故障导致工程损坏。 |
2. 单张模板备份 1)优先在开发环境调整、验证与测试。 2)如果没有开发环境,必须先模板备份(名称可以加上日期后缀,比如*** _V20210627.cpt),基于备份的模板做修改调整,不影响正式使用。 3)模板调整修改需记录在案,方便追踪,可以使用设计器的模板版本管理功能。 详情请参见:模板版本管理 |
3. 报表命名规范
项目 | 规范 |
---|---|
目录命名规范 | 1. 不使用中文,名称整体由26个字母、数字、下划线组成,首位必须为字母 |
2. 目录名需做到见名知意,与业务模块相关。 例如: 财务:FINANCE 人事:HR 营销:MARKET | |
3. 下层目录建议用‘_’来分隔命名 例如: 营销的销售二级目录名:MARKET_SALE 营销的回款部分:MARKET_GETIN | |
4. 报表目录层级尽量不要超过四层 | |
5. 建议独立创建测试目录TEST,作为各实施人员或运维人员自己的测试空间 二级目录为TEST+下划线+名字 例如:TEST_NAME | |
6. 测试模板一旦正式启用必须另存到正式目录中 | |
模板命名规则 | 1. 模块目录名+下划线+编号 例如:MARKET_SALE_001 |
2. 编号可以按照制作顺序递增,不可重复 | |
3. 准备一张报表映射excel,可以放在文件管理系统中,根据开发情况及时更新。 形如: | |
数据集命名规则 | 1. 参数面板数据集:以para_开头 例如:地区选择下拉框的数据集para_area |
2. 数据字典数据集:以dic_开头 例如:产品映射字典数据集dic_product | |
3. 报表主体数据集:以report_开头 例如:客户销售数据report_customerSaleData | |
4. 图表数据集:以chart_开头 例如:产品占比图表chart_productRatio | |
参数命名规则 | 1. 不能以数字、$ 符号开头。 |
2. 变量名只能是字母 (a-z A-Z)、数字 (0-9)、下划线(_)、(@) 或中文的组合,并且之间不能包含空格。 | |
3. 变量名中不能含有 ? * . - +/等字符和空格。 | |
4. 变量名是不区分大小写的, 但不能用保留字 比如true、false;FALSE、TRUE,因为写公式引用的时候容易搞错,跟保留字冲突 | |
5. 全局参数:以g开头 例如:gSaleGroup,gProduct,gPerson | |
6. 模板参数:以p开头 例如:pDate,pCurrency,pUnit | |
7. 数据集参数:以s开头 例如:sCompany,sProject | |
条件属性命名规则 | 1. 建议使用简短的中文命名,方便业务和开发 |
2. 格式:条件类型_具体功能 例如:列宽_隐藏projguid列 | |
超链接命名规范 | 1. 建议使用简短的中文命名,方便业务和开发 |
2. 格式:超链接类型_具体功能 例如:网络报表_跳转到明细 | |
FVS 组件命名规则 | 1. 不允许使用复制组件自动填充的名称 例如:表格1_页面1_c1、表格1_页面1_c1_c1 |
2. 每个组件应按照组件类型+序号+页面的形式,方便后期维护调整 例如:表格1_页面1、表格2_页面1、表格1_页面2 | |
3. 每个组件名称中加上实际用途 例如:表格1_页面1_销量明细、饼图1_页面1_销量占比 | |
普通报表悬浮元素命名规则 | 1. 每个悬浮元素名称中加上实际用途,方便后期维护调整 例如:Float0_sale_detail_line_chart |
4. 报表功能实现规范
常见需求的实现方法规范,在满足功能的前提下,以性能、便于维护为目标。
项目 | 规范 |
---|---|
展示报表制作 | 1. 图块多的报表(如驾驶舱、大屏)使用 FVS 可视化看板开发 |
2. 减少单元格过滤的使用,尽量在数据集中过滤。 | |
3. 报表不要使用隐藏行、列,如有需要使用条件属性隐藏 | |
4. 公式要注意格式,如嵌套公式应做到每个公式换行,每个条件或结果换行 | |
5. 数据量大的模板需要导出,使用大数据导出excel插件或者流式导出插件 | |
6. 预览数据量大的模板使用sql参数限制数据量,或者使用分页sql、新引擎、行式引擎、新填报预览等功能 | |
7. 减少跨组件获取单元格值使用 | |
8. 控件数据字典数据量大且重复数据多时,避免直接使用数据库表 建议专门创建专用的数据字典数据集 | |
9. 如非必要,不要在公式和 JS 中使用 SQL函数 | |
10. 设计时尽量减少行列和格子数 | |
11. 设计时尽量减少层次坐标、SQL 类函数在扩展行的使用 | |
12. 设计时尽量减少公式调用图片 | |
13. 设计时尽量减少控件数量 | |
14. 同一行不同格子设置过滤的时候,尽量只对第一个格子设置过滤 | |
15. 所有格子尽量使用同一个父格、而不是依次继承 | |
16. 控件数据字典尽量用“数据查询”,并开启缓存,尽量不要直接用数据库表 | |
填报报表制作 | 1. 大数据量填报报表要尽量读写分离,查询报表和填报报表分离 |
2. 填报报表设置参数,新增导入时不展现数据 查询修改时尽可能添加过滤控件,减少查询结果集 | |
3. 业务主键字段通常设置不可修改 如必须修改则应用数据库表中代理主键UUID字段做填报主键,新增数据时公式赋值新的UUID | |
4. 没有导入需求时,尽可能在单元格做即时校验 有导入需求时则应将所有校验设置在提交校验中 | |
5. 填报的数据库表设计 设计思路: 1)要有自己的主键,有主键在做数据的修改、流程流转时很有用,不用去用很多字段确定唯一的记录 2)要有填报时间、填报用户。用于追溯数据的来源,时间等。 | |
6. 填报报表设计 在页面的单元格中写参数$fine_username,公式now()。分别记录填报的用户,页面打开的时间。 1)添加E1、F1两个单元格,分别写入公式now()和$fine_username,这两个单元格不扩展,并隐藏。 2)设置填报属性,这里要勾选上未修改不更新,注意使用该功能时,填报属性中的值一定要是单元格,不能填公式,所以上一步特地新加了两个单元格。 | |
参数开发 | 1. 参数统一采用英文命名方式 |
2. 参数采用26个英文字母和0-9这十个自然数,加上下划线_组成,共36个字符,不出现其他字符。 采用英文单词或英文短语(包括缩写)作为名称,参照字典表给出的基础命名,没有的去翻译,不使用无意义的字符或汉语拼音。 | |
3. 大屏中设置参数要考虑到不同报表块参数加载速度的问题,避免一个大屏模块过多的不同参数 | |
4. 多个数据集中的同一个参数默认值设置成相同,避免出现异常 | |
5. 涉及到不同TAB模块的同样指标的参数,参数名建议带上对应TAB模块的名称, 以地区参数为例,例如:TAB1AREA、TAB2AREA | |
6. 对于多个模板都要使用的参数,可以设置成服务器参数,供多个模板使用 | |
7. 超级链接传递参数,设计模板时建议在子页面的单元格用=$参数把参数值显示出来确认传递的值没有问题,设计完毕后删掉公式 | |
8. 控件实际值统一用id,控件显示值统一用名称,sql过滤条件统一用id过滤 | |
9. 数据集sql中使用参数时,使用公式if(len(参数)==0,"","sql条件")规避参数为空的情况,避免特殊情况下出现报错或者打印、导出没有数据 | |
10. 避免使用单元格的过滤功能,尽量用sql进行处理,单元格过滤会影响报表展示性能 | |
条件属性 | 1. 设置条件属性时候需要考虑到性能问题,一行上面一个条件属性能解决的问题不要用多个条件属性 |
2. 尽量合并多个条件属性为一个,通过多写条件判断实现,条件属性过多降低前端展示速度 | |
3. 隐藏行列一定不要直接隐藏行列。通过条件属性设置行高or列宽=0达到隐藏行列,方便维护 | |
4. 条件属性根据实际需求命名,不要用默认的“条件属性1”“条件属性2” | |
5. 要考虑性能问题,能不使用条件属性则不使用 |
5. 报表UI设计规范
在FineReport报表的开发过程中,对于报表的UI,需要注意字体、格式、配色这几方面。具体实施,不同用户会有不同需求。
若您有专门的UI设计规范,则以您的设计规范为准,若没有则在报表的开发过程中,建议遵循本UI设计规范。
UI设计规范方面,不同的人有不同的看法,核心是:
1)风格一致,整齐清爽。
例如,标题都是黑体,正文都是宋体等;配色风格,如都是暗色系,则不应突然冒出个亮色系。
2)字体、格式、配色,可因地制宜,根据实际情况处理。
举例:财务的报表,要求字段都左对齐,那应当遵循其既有规则。有些商用收费的字体应该避免使用。
注:推荐在制定规范前,学习一些视觉设计原则:颜色搭配一致性原则、色彩与配色基础、页面布局
项目 | 规范 | |
---|---|---|
字体 | 通用规则 | 1. 中文字体里,建议使用宋体、仿宋、黑体、楷体、隶书、幼圆。 另外,思源黑体、思源宋体、庞门正道标题体、文泉驿系列、站酷系列,以及方正的楷体、黑体、仿宋、书宋,都可以免费商用 |
明细表 | 2. 明细表的标题和图表的标题,建议加粗,且字号大于正文。 | |
3. 明细表示例 | ||
4. 不同报表的标题,字体、字号应一致。 若出现表头,或是二级标题,字体应小于主标题,大于正文,建议加粗 正文,字体、字号应一致 | ||
图表 | 5. 图表中涉及文字的地方有标题、标签、轴标签、提示。 这四类,同类应保持字体、字号一致。 标题字号一般大于其他三类。 建议这四类,字体一致,后三类字号一致。 | |
格式 | 大规则 | 1. 所有标题居中;数字的小数位一致。 |
明细表 | 2. 明细文字,格式统一,都居左或居中。 | |
3. 明细表第一行、第一列空出来,留出点余白。 行高最好一致,自动换行不建议开,字数不一致的情况下,会导致行高不一,显得很乱。 | ||
4. 网格线方面,保持风格一致即可,即线型、颜色一致。 | ||
5. 明细表的行列不许直接隐藏,用条件属性实现。 | ||
图表 | 6. 图表标题居中。 坐标轴标题,若有,如Y轴标题,则位置应保持一致,都居上或居中。 | |
7. 标签的位置,至少同一类图表,如柱形图,应保持一致,都在外侧或是内侧。 | ||
配色 | 明细表 | 1. 字体颜色一般都是黑色,特殊情况,如数值预警高亮,因地制宜。 |
2. 表头加背景色,不建议大红大紫那些过于鲜艳的颜色,建议蓝色或灰色等。 表头字色根据背景色调整,建议白色、灰色等。 | ||
3. 明细表建议设置奇偶行的间隔色,以达到好区分不同行的目的。 颜色同样不可过于鲜艳,建议灰色或淡蓝色等。 | ||
4. 明细表配色示例 | ||
图表 | 1. 根据背景颜色来设置标题等字体颜色。 如图表都是暗色系,那文字的颜色建议白色这样的亮色系。 | |
2. 不同系列色,应遵循美观、舒适的原则,颜色不可太亮太刺眼,要让人看得舒服。 | ||
3. 大屏的背景色建议暗色系,因为白色在大屏上的展示效果不好。 |