comtop0 2020-09-18
最近低代码、零代码很火,网络一搜,各家都鼓吹自己零代码开发的平台。确实,近十年IT的发展以及互联网产品的推动,使得很多细分领域的工具都呈现出一种简单易用少开发轻量化的趋势。
笔者自己也在IT行业做了10多年的开发,开发过类office的套件、数据平台、也开发过互联网应用,个人觉得:目前面世的零代码开发平台只适合在逻辑简单的小型软件,比如一些简单的数据上报和简单数据统计功能,比如调查问卷和数据提交类小型的、逻辑简单的、临时性的小程序。但是针对企业复杂业务环境使用的,比如常见的ERP、OA、数据平台以及银行、证券等专业性强、逻辑复杂的软件,充其量还只能算是低代码开发。要知道软件的可开发程度和功能丰富程度是相斥的,和业务的需求满足丰富度也是相斥的。
就工具而言,无论是低代码还是零代码,都是为了解决开发效率问题。现在很多工具在现有先进技术基础上抽象出一套可视化的语言和组件。有些是针对ERP、有些是针对OA、有些是针对可视化表格处理,基本上在某种场景下,这些低代码平台的效率提升速度是非常可观的。比如我所熟知的报表和BI领域,很多公司都有数据采集、数据处理、数据展示等一系列数据“交互”的需求,具体如报表、填报、数据流转、数据读取展示等。
就报表开发这一项需求,以往的操作或者现在大部分小型公司的办法是:业务数据在数据库中——需要数据时IT通过sql取——有的会进一步处理成成品数据——导出Excel给业务——然后业务在Excel中处理数据。
有些公司开发可能会针对一些使用高频的报表开发自动化,比如java或Python写一个自动化的脚本。但这就带来代码开发的问题,代码有bug需要维护,需求要变动需要改代码。报表需求又多又杂,每次来个需求就要动手改代码,挺手工的。且这样的公司报表数据,存在于每个人的Excel中,存在于代码中,没有平台承载,无异于裸奔。
于是,在零几年的时候,就陆续诞生各种报表平台,一步步将操作可视化、将代码可视化、将运维、开发相关平台化、系统化,基本已发展成稳定的低代码报表开发平台。就比如业内翘楚FineReport。
接下来我从功能上深入浅出剖析下这个低代码报表开发平台。
1、SQL语句可视化编辑
开发报表的重要操作之一就是读取填写数据,大部分情况我们都是直接写SQL。那成熟的报表开发平台怎么做?
在操作数据库数据时,FineReport有一个类Navicat的数据库可视化操作界面,链接数据库,读取数据表......其次是一个可视化的SQL编辑页面(如下图),直接拖拽表和字段到编辑中,直接生成SQL语句。当你写个百八十行SQL的时候,还是能节省不少时间。
2、报表模板零编码编辑
然后就是设计报表,报表的大部分时间都花在开发报表样式上,类似Excel,可视化填数据、处理数据、做表格样式。FineReport做报表模板的逻辑类似Excel,也不要写代码,将相应字段拖到表格中,全程基本也是可视化编辑。
但是数据展示的逻辑不同。Excel处理的对象是一个个数据,FineReport处理的对象是数据库中的数据表字段名。模板中一个单元格放一个数据字段,web端展示时,数据随字段横向或者纵向扩展。
3、参数查询可视化配置
在很多情况下报表的数据展示,需要根据条件查询数据、过滤。通过设置参数绑定数据字段和过滤的控件(单选框复选框等),通过界面输入查询条件来控制报表显示的内容及形式,而后导出。关于参数设置,FineReport有可视化参数界面,用来放置与查询相关的控件,可以随意布局,拖拽设计想要得到的界面效果。
4、可视化dashboard构建
数据可视化方面,FineReport通过决策报表来设计展现,操作上报表、图表以及各类控件都封装成了模块,通过组件拖拽操作方式快速制作组件式报表,比传统格子报表更美观,可以自适应屏幕的大小和分辨率,智能排布组件布局,交互效果更佳,极适合构建决策驾驶舱。
另外,配合可视化的参数定义,FineReport能够实现可视化的多层钻取功能设置,同一张报表根据不同字段值进行钻取的功能。
说完开发操作再来谈谈平台运维相关。
1、定时调度
报表这块的定时调度,比如有些报表如日报、月报、季报是需要定期生成、定期发布,为避免定期重复做,FineReport在平台上开发了现成的定时任务功能,设定后服务器会在指定的时间自动完成设定的任务,定时生成报表,定时转换数据,定时发送邮件、短信、移动端客户端信息,能指定报表生成目录,并以Web方式查看报表生成结果。
2、权限管理
有平台就有用户,数据安全方面就要做好权限管理。平台策FineReport配置有可视化的权限设置精细到单元格的权限粒度。
通过分级权限控制功能,可以实现不同分子公司/部门共用系统,各个分子公司/部门有其自己的管理员,并给其下属员工分配权限,即超级管理员控制所有权限,下级管理员只能管理自己职责范围内的用户和报表模板。
其他,还有封存好的功能如,集群配置、备份还原、智能检测、云端运维、平台日志、资源迁移等,也都平台化了。
低代码平台最大的好处是让程序员可以专注于核心业务逻辑的部分,所有外围的东西平台都为你预置了,可以直接调用。
上文说过,软件的可开发程度和功能丰富程度是相斥的,大部分通用功能都已经模块化集成到软件中,能应付绝大部分业务需求。但是企业环境是多变的,业务需求是多变的,个性的不能满足的部分就要靠开发来实现。
所以FineReport也“留了一手”可开发的部分,其实就是开放接口,开发人员可以使用网页脚本JS、API 接口等对 FineReport 进行深入的开发与控制,比如前端调用第三方可视化库,比如和一些非主流的业务系统、数据库对接,比如需要开发公司特有的平台界面,做单点登录集成等等。
再回到低代码平台!
对于开发人员来说: