本文从技术和工具的角度分享可视化大屏的开发!
主要是对报表工具开发可视化大屏做测评!
常规的数据可视化方式我们可以选择直接读取数据库,通过绘图软件/库进行绘制,最终构成自建的前端显示效果,比如使用 Apache ECharts (incubating) 等工具。
除此以外,追求效率的我们还可以选择成熟的报表套件,这类套件往往具有一系列的图表模板+支持推拽且可视化的配置页面,方便我们快速的构建出可视化大屏。其实大部分套件的机理差异并不大,为了降低文章内容量,本文直接讲解某一种套件,
当然报表套件又分为三类:
本文选择第三类的一款套件作为讲解 -- 帆软的 FineReport,选择此产品原因:
1、国产软件,中文文档、中文配置界面,对于国内用户友好度高
2、国内基本最领先的报表工具,可视化大屏开发成熟
(注:我尽量从可视化报表工具的角度出发描述,而不是针对某个具体的产品,只是为了形象且可查证会给出 FineReport 在下面各方面的实践方式 / 方案,不作任何额外评价)
既然是个套件应该有很多完整成熟的功能,我们以这几个维度来聊聊:
首先说说设计平台,一般分为两类类:
FineReport 属于前者,对于不同系统均由轻松安装的安装包,不需要复杂配置。
对于 B/S 产品,和搭建后端类似,只是不需要复杂的配置了,直接根据教程安装一下就即可启动服务.
对于后续要说的功能扩展性,可能会影响此步骤,如果产品具有功能扩展性,那么额外扩展的功能需要单独部署在服务上并配置相关连接,如果是基于插件化的扩展需要在服务端安装对应插件。此部分建议构建完整的环境搭建文档,如果产品可以通过脚本安装,建议直接将部署过程脚本化。
FineReport 环境安装也是安装包直接搞定,其具有插件平台,若有补充插件需要通过 web 登录后添加对应插件。
企业数据应用阶段,往往数据可视化以后就逐渐地产生了可视化大屏。可视化大屏往往单页面信息含量极其丰富、跨越的业务部门繁多、数据分析维度全面。所以从技术角度来讲,我们需要保证单一故障不会大面积的波及其他信息,比如:
对于故障还有额外要做的是实时处理方式:
继续说 FineReport的情况:
理想状态下,我们的数据库不应该使用公网 IP,这方面针对前面提到的三种类型:
FineReport作为 B/S 产品,有完整的服务端,前后端交互在数据方面一般以 POST 请求。
简单查看:请求参数是控件 id、控件内容、行为等,不会涉及到要执行的 sql。返回结果为控件信息及控件内数据。不确定是否有遗漏的情况,再加上使用 SSL 可进一步提高安全性。
报表并不是一件简单的事情,无论是经过数仓的手段还是数据中台的手段,从业务角度来看,我们都是先打破了部门壁垒,然后让各部门数据相互碰撞,挖掘出更多的剩余价值,这就导致了我们报表业务的复杂性以及开发的工作量,我们不得不进行协作开发,尤其是可视化大屏。
一个可视化大屏可能有几十个模块,每个模块有三五个甚至更多一些的分析指标,一个页面上轻松可以出现过百的指标,因此能够让开发过程可协作是极其重要的环节。
首先对于协作我们需要考虑下面几个问题:
……
FineReport支持通过更改工作目录为远端的工作目录的方式,直接开始协作开发,此方式只是将设计文件的存储位置放到了远端,真正操作执行等还是在本地,类似于一个设计文件版本管理器。
产品是否提供了模块化 or 插件化平台,以通过公开流程关键节点的接口或其他方式来支持第三方插件、自定义组件的接入,来实现“无限可能”的未来。
插件包括但不限于:
FineReport有插件平台,包含多种分类分组,有官方插件及第三方插件,且有插件开发 API 文档
FineReport布局上可以选择绝对布局(一切靠手拖拽),或者选择自适应布局,其可以配置双向单项(水平、垂直、栅格)同时可配置内边距与组件间边距。
可复用性也直接或间接地影响到了协作开发的效率、最终展示效果一致性等多方面。
FineReport提供了网页插件,可通过插入网页控件来引用其他的组件,以嵌套的方式组合多种显示块。
还提供了模板插件,通过将选中的多个组件打包成一个模板,同时打包了组件间布局关系、数据操作逻辑,实现了逻辑、关系与控件的整体迁移复用,但其只能记忆布局关系,无法记忆布局最终尺寸,在多次复用后需要调整整体的尺寸问题。
此类型工具是通过将多种常用功能进行持久化的方式提高开发效率,但难免遇到特殊的需要,这时候就需要高度的自由行,比如提供插件平台、组件设计方式、API 接口、可编程……
FineReport提供了对 JS 的支持,可以在很多空间里在点击等操作时触发对应的 JS 脚本,后面就看开发自己的了。
同时有插件平台,可将重复使用的功能通过插件的方式持久化,有模板插件,可将重复的组件/组件集进行持久化。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。