1. 综述
如果我们把 FineReport 比喻成一棵大树,FR9.0 让这棵树长的更高,长出更多枝丫,我们从智能·共享·开放 3 个角度,延伸更多场景,提供更广阔的想象空间。而我们 FR10.0 则希望这棵树的根扎的更深更稳,因此我们从安全性、大并发、高可用等几个角度发力,希望能让 FR 成长为企业可信赖的报表中心,能支撑起繁杂的报表业务,为企业报表应用的安全可用保驾护航!
注:10.0 支持 JDK 版本:JDK 1.8 且小版本需在 JDK8u102 以上。
2. 平台
2.1 外观更好看
平台整体风格简约现代,交互流畅易用
外观配置方面:
支持登录标题与平台标题分开设置。
对平台的配色有了更多的自定义项,包括顶部标题行样式、面板聚焦颜色、左侧导航背景、悬浮面板背景、标签栏背景、文字颜色。
去除了对于信息提示的样式设置。
详情参考:外观配置
2.2 系统更稳定
日志存储脱离数据库,特别是内置的 HSQL,改为基于帆软自主开发的 Swift 引擎(10.0 日志不支持迁移)。全面提高日志存取分析的效率,同时也能有效避免由于日志过大导致系统过慢甚至宕机。
平台优化了对超大量用户的支持(10W 级用户),各管理系统页面可达到秒级响应。
配置脱离 XML,改存数据库,确保不再出现保存丢失的情况,特别是权限丢失这类很严重的问题。
详情参考:平台 HSQL 默认迁移
2.3 功能更强大
用户管理 —— 用户可被禁用;同步数据集可以增加 ID;批量删除支持一次删除所有用户,不再是原来的一次最多删除一页用户;支持对平台使用用户进行设置;支持管理员在添加用户、为用户重置密码后,系统自动发送邮件通知此用户。
目录管理 —— 支持在根目录下添加模板;支持模板和目录混排;支持对目录整体进行批量删除;去除了目录封面的设置。
权限管理 —— 配置易用性增强,包括:
1)去除了“用户权限查看”与“权限项查看”,所有配置所见即所得,可以更方便的查看和配置权限。
2)增加了权限来源查看的功能,令权限的配置过程更加清晰。
3)支持直接对用户设置权限。
4)支持权限复用,权限复用不支持在用户维度进行权限复用。
5)只有开启了分级授权,才可以对用户进行人员管理与管理系统的权限配置。
6)权限配置时支持对人员管理、目录权限、管理系统进行搜索。
7)对首页的权限配置从外观配置移到了权限配置中。
8)模板权限剥离成单独的模块:模板认证 。
2.4 支持平台新建数据连接
数据连接单独放入了目录中,并支持在平台中创建数据连接。
详情参考:数据连接选项
2.5 日志更全面
原本的系统情况变为了 平台日志,所有日志支持导出。
模板访问明细去除了非明细查看,增加了高级查询条件,同时增加记录了模板在平台中的路径、不通过平台的报表访问、打印与导出的操作类型。
高级系统监控插件内置,新增用户行为、模板热度、性能监控三个 Tab。
原本日志查看变为出错日志。
新增管理日志,记录全部平台管理设置操作日志。
2.6 公有云注册
增加一种公有云授权机制,不需要提供机器物理信息,可直接到帆软认证服务器进行在线认证,方便快捷,安全可靠。
详情参考:公有云认证
3. 集群
FR 的集群经历了 2 个阶段——基本依赖于容器的集群和自主开发的主从集群,但随着报表系统的在信息化系统中地位的提升,所承担的压力也随之增加,原本的两种集群方式暴露了比较多的问题,FR10.0 在此基础上推出了全新 集群,有如下几个特性:高一致性、高可用性、高适应性、大并发性、使用简单,为客户系统的高效正常使用保驾护航。
特点详述:
3.1 支持热部署
增加删除节点不需要重启集群,只需要拷贝其他节点文件到该节点并启动既可。新增节点简单。
3.2 对高可用性方面的优化
适配了新的集群特性,某节点宕掉,自动切换其他节点,登入的用户无需重新登录。并保持所有单机功能可用。提升了集群的高可用性。
3.3 对并发性能方面的优化
对负载方面做了更好的优化,负载更加均衡。同时单节点支持的并发数更大。在负载均衡的情况下,并发数随节点呈线性增长。提升了集群的大并发性。
3.4 新增本地缓存机制
新增本地缓存机制,文件服务器、状态服务器、外置的数据库的内容会在第一次及更新时,读取信息到缓存里。并在保存文件、配置时写入各服务器。提升了访问响应速度并有效降低对各服务器的读写并发。
3.5 新增状态服务器
新增状态服务器,解决 Session 同步的各种问题。状态服务器存储集群的各类信息。存储 Sessionid 与节点信息和关联关系,不再需要配置 Session 粘滞。简化了配置内容,使用简单。
3.6 新增文件服务器
新增文件服务器,用于共享模板及模板所引用的附件。保证每个节点访问的模板及附件实时一致。保证模板及附件的高一致性。
3.7 外置数据库保存平台配置信息
集群下,平台配置信息全部存储在外置数据库。保证每个节点访问的平台配置实时一致。保证平台配置信息的高一致性。
3.8 新增平台的可视化配置界面
平台新增集群的可视化配置界面,可进行状态服务器、文件服务器的绑定与配置。并在开启集群后,可实时查看各节点的内存运行情况,并配置各节点的 IP,端口,主机名的信息。让集群部署更简单快捷。
4. 安全性
数据是 21 世纪的石油,如何保证企业应用的安全,已经上升到必然需要面对和解决的高度。因此我们在 FR10.0 着重在安全性上发力,从修补漏洞和主动防御两个角度去整体提升应用安全。详情参考:安全管理
特点详述:
4.1 修补漏洞
10.0 平台中所有密码加密存储,降低密码泄露风险。
使用 Token 验证,解决 HTTP响应分割、会话标识未更新、跨站点请求伪造的问题。
不再返回报表绝对路径,修复发现目录列表模式的漏洞。
注:只适用于平台内挂载报表。(下钻)超链形式的还是显示的绝对路径。
4.2 主动防御
新增 Cookie 增强、文件上传校验、Security Headers 及访问控制等一系列安全防护功能。能降低上传恶意文件、跨站脚本等多种攻击方式的威胁,缓解 CC 攻击和爬虫爬取,提高应用的安全性。
4.3 密码增强策略、防暴力破解
支持密码定期更新,密码强度限制与修改密码时短信、邮箱验证,进一步提高了平台的安全性建设。
防暴力破解增加登录次数限定功能,可以限制允许登录错误次数和锁定时间,超出则锁定,可等锁定时间过去自动解锁或通过管理员解锁及重置密码解锁。
同时增加滑块验证和邮箱验证,滑块验证开启时如用户输入密码错误次数达到两次,第三次开始需要进行滑块验证。
邮箱验证类似短信验证,开启时登录要接收邮箱验证码验证,同时开启邮箱和手机只用选其一验证。
4.4 其他
水印功能优化——设置界面简化,现在可对字号进行设置,解决了密度设置不明确带来的困扰;优化对公式及换行的支持,并以顶层透明的形式显示,不再被内容遮挡;优化打印及 PDF 导出效果,让数据更加安全。
5. 运维
5.1 云端运维
系统稳定可用有时比功能丰富强大更重要,特别是对于 2B 产品,所以智能运维一直以来就是我们产品的重心。开启此项功能后,云端在系统自动或者用户手动上传数据包(绝不涉及业务数据)后生成检测报告,给出用户运维建议。相比于本地运维,云端运维有其优势,比如大计算、零成本、低门槛、高成长等等。因此我们希望通过云端运维和本地运维两种方式丰富运维功能,发挥各自优势,为系统的稳定可用保驾护航。
云端优势:
大计算——通过大量复杂计算模型、基于大数据的统计、比较和拟合,给出更精准、更智能、更全面的运维建议。
零成本——无需消耗本地计算资源,大计算在帆软提供的云中心完成。
低门槛——无需维护运维工具本身(运维工具部署在云端,由帆软的专业人员维护)。
高成长——持续更新成长的运维平台,功能更新不需要用户额外处理,不会对用户产生任何负担。
数据安全:
数据脱敏——只涉及产品改良和应用运维所需数据,绝不涉及业务数据。
数据披露——用户可以随时看到上传了哪些数据。
保密协议——如有需求,可以签署保密协议。
支持的功能:
性能问题模板推荐——基于系统使用情况,推荐出性能存在问题的模板。
5.2 智能运维增强
FineReport 10.0 智能运维 通过优化防宕机机制,增强对于资源的合理应用,从源头预防了导致宕机的各种问题,进而保证了系统的可用性。
1)优化了智能释放的机制:在内存占用达到阈值时可以通过强制 GC 有效地回收资源,进而保证系统的可用性。同时用户可选择在内存使用过高时自动地清理过早或过大的会话。
2)增强了模板限制功能:通过对于数据集中的行数、模板中的单元格数、SQL 的执行时长进行限制,有效地防止单模板占用过大内存、SQL 执行过久造成线程阻塞的问题。
3)使用延迟队列检查 Session 是否过期,令用户可以通过简单的设置对会话的生命周期进行管理。
4)日志文件过大时自动提醒用户进行日志清理。
6. 设计器
设计器是信息部门人员使用最多的工具,一些问题困扰我们已久,比如设计器越用越卡、加载保存慢等等。10.0 主要解决这些性能和严重 bug 并对远程设计进行了大的重构。
6.1 远程设计重构
传输时的序列化数据格式由 XML 改为字节,降低传输的数据量
保持 HTTP 协议的方式,进行远程设计的连接验证。
采用 Netty 框架做私有通信协议替换 HTTP 协议作为远程设计的通信协议,进一步降低传输的数据量采用 RPC(远程过程调用)的通信方式,完成远程设计的实时操作。
保证了网络间通信的高效,降低了数据传输的出错率。
6.2 远程设计模板权限管理
支持使用系统管理员账号配置远程设计的用户,并给远程设计用户分配各自的模板的权限。方便远程设计下每个开发人员的权限精细化管理。保证模板安全,避免权限泄漏。详情参考:高级远程设计
6.3 设计器卡顿优化
修复了内存泄漏的相关 bug(卡顿的主要原因)。
新增限制最大缓存模板个数功能,来保证内存不会随着使用时间增加而不断提升。从而解决卡顿问题。
6.4 设计器解决 0KB 问题(模板临时文件存储)
设计器模板 0KB 一般问题都出在保存,新版本通过保存的时候先输出到临时文件, 然后再重命名为源文件, 删除临时文件的方式,解决了此问题。
6.5 远程设计支持新增、删除、重命名文件、文件夹
远程设计状态下,支持在设计器内对目录下的文件和文件夹进行操作。可对文件和文件夹进行新增、删除、重命名。
6.6 设计器「更新升级插件」内置
由于使用插件「更新升级插件」功能的客户很多,两个插件内置到设计器中,功能及界面与原来相同。详情参考:FineReport 升级指南
6.7 设计器数据连接界面删除「编码转换」的配置选项
由于使用「编码转换」功能的客户过少,数据连接界面删除了「编码转换」功能的配置选项,但后端功能代码保留,确保已使用的老客户能正常工作,也避免该功能给新客户造成误导。
7. 大屏
新增更炫酷播放图表、组件动画。针对大屏应用场景:增加了 6~7 个高级图表组件,15 种动态加载动画并支持 3D 组件和加载动画的联动。解决了大屏用户追求更酷炫的效果。
7.1 扩展图表
新增 8 种高级图表组件(酷炫大屏 3D 特效),让整个大屏制作效果更加酷炫富有科技感:
1)三维柱形地球 2)三维点地球 3)三维流向地球 4)KPI指标卡 5)粒子翻页计数器 6)时间齿轮 7)目录齿轮 8)轮播 GIS 点地图
详情参考:扩展图表
7.2 组件加载动画
支持 15 种动态加载特效,通过组件加载动效,让每个组件模块舞动起来,让整个大屏界面化静为动:
1)向上滑动 2)向下滑动 3)向左滑动 4)向右滑动 5)弹跳 6)拉伸 7)脉动 8)轻微摆动 9)摇摆 10)沿Y轴轻弹 11)沿X轴轻弹 12)向上缩放 13)向下缩放 14)向左缩放 15)向右缩放
8. 图表
8.1 地图文件
10.0 的地图调整了目录结构,新增'世界'目录,且置于'中国'目录之上,形成钻取关系。
如:用户制作的 9.0 模板中地图路径为:'assets/map/geographic/中国/上海市.json',在 10.0 中需要将模板路径改为'assets/map/geographic/world/中国/上海市.json'才可正常识别。
可以通过「手动升级 JAR 包」或「手动迁移模板」两种方法来解决,详情参考:地图文件更新
8.2 老图表
1)10.0 不再提供新增老图表的功能,不过老模板中已经存在的老图表依然支持设置和预览。
2)10.0 发布后,会于下一个小版本中推出老图表的插件,有需求的用户可以通过安装插件的方式使用老图表。
3)10.0 不再支持位图地图插件。
9. 移动端
10. 其他
10.1 HTML 解析
报表里使用 HTML 是非常常见的场景,但市场上却没有任何一个产品能完美解决 HTML 的展现、特别是打印、导出。FR10.0 致力于改变这样的现状,希望能彻底解决 HTML 内容展示打印导出时出现的各种问题。
功能描述:
单元格设置为「以HTML显示内容」时,在原有支持功能的基础上,新增了对于 IMG 标签、List 标签、Style 标签、Table 标签中的各项属性、文字上下标、文字样式的支持;HTML 内容分页情况下也不会重复显示内容,可以在正确的位置断开;同时在有 HTML 时可支持单元格的各项属性设置。
10.2 自适应逻辑改进
页面重加载时不再到后台请求计算,而是改为前台缩放,减少计算,优化体验。包括拖动浏览器窗口大小、执行全屏操作等。
10.3 删除控件校验出错的回滚机制
取消了原控件校验出错时的回滚机制,替换处理逻辑为:保留当前编辑内容,即控件编辑过后如果校验失败,则提示出错信息同时控件保留当前编辑的内容。(仅新填报)
10.4 控件多个实际值对应同一个显示值
在给控件配置数据字典的时候,可能会碰到多个不同的实际值对应同一个显示值的情况,这个情况以往通常是通过修改原始数据来解决。
本次更新,优化了控件在多个实际值对应相同显示值情况下的处理逻辑,当直接在控件里选值时,无论是参数查询还是填报控件,均支持实际值和显示值多对一的情况。
10.5 邮件正文以 HTML 显示
邮件正文预览报表内容时,以 HTML 方式显示报表内容。解决了之前邮件中以图片显示报表内容时出现的内容模糊,文字不支持复制的问题。
10.6 9-10 升级工具
大版本更新时的平滑升级是比较头疼的工作,各种配置文件、JAR 包等需要考虑兼容,靠人工处理往往容易犯错,导致升级出现问题。
为了帮助用户更顺利的从 9.0 升级到 10.0 版本,我们特提供一个独立的辅助升级程序,可以将 9.0 的 Web 工程升级到10.0 工程,包括 JAR 包、各类配置文件、FineDB 数据表等的兼容升级。
该辅助升级工具无需安装,即点即用,简单方便。
详情参考:9-10 升级工具
10.7 内置服务器由 Jetty 换为 Tomcat
原本的内置服务器由 Jetty 变为了 Tomcat,在稳定性更强的同时也让部分用户能够更快捷的搭建报表服务器。
10.8 AlphaFine 优化
AlphaFine 接入小帆知识库,支持分词搜索,更能理解用户描述的问题。