低代码开发平台(Low-code development platform)是今年热度很高的词,有人认为是“新瓶装老酒”,也有人认为是未来的发展趋势。过多的技术炒作导致部分人对技术名词有些排斥,也增加了我们判断发展趋势和伪概念的成本。我认为代码平台是有价值且有发展前景的。低代码平台的发展有利于互联网技术快速落地到各行各业,提高整个社会的生产和运作效率,它甚至有可能会引发一场互联网革命。
本文我们主要介绍什么是低代码平台,以及它的价值、常用技术和局限性。
我们先看看维基百科对低代码平台的定义: 低代码开发平台(英语:Low-Code Development Platform,简称LCDP),是一种方便产生应用程序的平台软件,软件会开发环境让用户以图形化接口以及配置编写程序,而不是用传统的程序设计方法。此平台可能是针对某些种类的应用而设计开发的,例如数据库、业务过程、以及用户界面(例如网页应用程序)。这类平台可能可以产生完整且可运作的应用程序,也可能在一些特殊的情形下仍需要编写程序。低代码开发平台可以减少传统代码的数量,加速商业应用软件的完成时间。常见的好处是让比较多的人可以参与软件的开发,不只是那些有程序设计技巧的人。低代码开发平台也可以让设置、训练及布置的初期成本降低。
A low-code development platform (LCDP) provides a development environment used to create application software through a graphical user interface instead of traditional hand-coded computer programming. A low-coded platform may produce entirely operational applications, or require additional coding for specific situations. Low-code development platforms reduce the amount of traditional hand coding, enabling accelerated delivery of business applications. A common benefit is that a wider range of people can contribute to the application's development—not only those with coding skills. LCDPs can also lower the initial cost of setup, training, deployment and maintenance.
根据维基百科的定义,低代码平台让用户可以通过拖拽等简单的页面操作或者少量的编程来创建可运行的应用。
有一些机构对低代码平台做了更详细的分类,其中有一种认可度比较高的,把常见的低代码平台分为4类:
这种分类方式是站在低代码平台主要解决问题的角度进行划分,对我们理解低代码平台是有意义的,但是现实中一个低代码平台产品并不一定是上述分类中一种,可能同时满足三四种分类。
新名词并不是横空出现的,更多是对社会问题总结归纳。当前社会互联网和传统行业存在断层,传统行业的技术专家更加专注于本行业技术发展,对互联网技术很难深入了解;互联网从业者也没有足够多的人可以融入到每一个行业去深入挖掘并定制化开发,即使有足够多的人融入社会每个行业做信息化,周期也会很长。低代码平台可以作为链接其他行业业务专家和互联网从业人员的纽带,业务专家利用低代码平台恰到好处的便捷性去定制化开发自己的业务系统,互联网从业者专注于低代码平台的建设。这也是一种社会分工的解耦。
我个人感觉当前面向企业的,实现企业内部流程线上化,加速传统企业信息化建设的企业级低代码开发平台前景巨大。
当前有很多低代码平台,微软的Power Platform,奥哲·氚云,雀书,Smartsheet,阿里宜搭,黑帕云,jeecg-boot等等,市面上形形色色的低代码平台实在是数不胜数。
https://github.com/taowen/awesome-lowcode 这个开源仓库中罗列了很多低代码平台。
这些低代码平台有一些是生成代码返回给用户,用户使用生成好的代码去部署应用或者二次开发。不过此类低代码平台越来越少了。当前更流行的是企业级低代码应用生成平台。这类平台不会给用户返回代码而是直接在平台上生成可以访问的应用。
国内的各大互联网公司除了一些已经商业化的低代码平台,还有一些内部使用的低代码平台,比如京东内部使用自研低代码平台开发很多内部应用;之前在浪潮工作时,浪潮的工作流引擎也是低代码平台的一种;还有在360时,360的即视平台让用户可以通过拖拽和页面配置生成一个大屏应用。
低代码平台之所以能蓬勃发展是因为它带来的巨大价值。
低代码平台的代码抽象级别比较高,不能按照某一个业务场景去定制化设计。基于通用业务模型的设计,是常用的实现思路。绝大多数低代码平台包含三个领域对象:低代码平台本身、应用开发者、应用使用者。平台为了支撑应用开发者和使用者需要有易用的前端编辑器和稳定的后端解析引擎。
应用开发者要无代码或少量代码生成应用,首先必须有灵活易用的前端编辑器。不同的低代码场景需要不同的前端编辑器。
在表单流程中需要表单编辑器,以支持用户自定义业务字段及校验规则。表单编辑器又分为静态表单编辑器和动态表单编辑器。静态的表单编辑器实现比较简单,只需要用户拖拽相应的组建到固定位置,定义好表单的名称就可以。 动态表单是指前端依赖业务逻辑变化展现不同的表单项。动态表单的实现涉及到DSL设计及解析,表单Schema设计。
为了串联多个上下游节点,让业务按照预定流程运行,前端需要流程编辑器。流程编辑器可以依赖Svg、Canvas等技术完成绘制。
在生成一些特殊页面时,比如公司官网、海报页面等是灵活多变的,这时简单的编辑器就无法满足用户需求了。需要提供更加丰富的前端组件让用户可以拖拽到页面的任何位置、随意调整页面布局,控制组件大小、旋转组件等,甚至支持用户自定义组件。实现这样的编辑器必须依赖Canvas的绘制能力,最好不要裸用Canvas采用一些Canvas的基础封装库或者自己对Canvas的原生API做一层封装。
电子表格本身具有很强大的编辑能力,应用到低代码平台中是非常适合的场景。实现一个电子表格编辑器需要处理表格数据的渲染、函数功能支持、数据透视图等诸多问题。不管用Canvas还是普通的DIV来绘制电子表格都需要注意对大量数据的分屏处理。
流程引擎可以结合BPM的实现思路来构建。BPMN2.0是业界用来构建流程引擎的一套通用规范,我们在自研流程引擎时也可以参照其思路去做设计。
表单引擎和前面的表单编辑器是对应的,表单引擎需要解析DSL语句及Schema文件,完成表单Schema到数据存储的映射关系。
此引擎和前面的Excel编辑器是对应的,在Eexcel中存在的各种公式,需要在后台解析具体公式的内容查询本系统或者相关系统的数据,或者是把公式转换为SQL语句查询某个库中的数据。
系统中生成的页面和数据往往需要权限配置,平台可以通过实现通用权限模型来解决,常见的权限模型有RBAC、ABAC等。
一个完善的低代码平台不仅仅要能创造应用,还需要具备数据分析的能力。这就需要平台在代码中添加打点数据,并通用准实时或者异步的方式统计应用使用情况。
应用开发者和应用使用者都会在低代码平台产生数据,在实现低代码平台时,最好把应用配置数据和应用使用数据分别存储。这样有利于平台的功能解耦,方便系统有针对性的扩容缩容等其它服务治理工作。
除了上面这些技术,低代码平台还需要保证生成应用代码的健壮性,业务流量高峰时刻做到合理的流量控制,保障应用的数据安全。
本文讨论了低代码平台的分类,发展趋势及开发低代码平台的常用技术。公司内部会有一些低代码平台的开发工作,后面再和大家一起学习低代码平台的详细技术细节。