低代码平台
# 设计一个低代码平台
本文目标是设计一个用于提高开发人员开发效率的低代码平台,这里会采用系统解决方案设计的一般思路来逐步探寻设计方案。
# 业务分析
# 低代码平台是什么
广义上的低代码平台包括低代码平台和零代码平台,它们都属于 APaaS(Application Platform as a Service 应用平台即服务),两者的主要区别在于对代码的依赖程度:
- 低代码平台:通过自动代码生成和可视化编程,只需要少量代码,即可快速搭建各种应用。
- 零代码平台:零开发经验的业务人员通过拖拽等方式,无需编写代码,即可快速搭建各种应用。
# 技术路线
# 基于 IDE 框架的快速开发平台
该方案将传统的集成开发环境(IDE)充分可视化,开发者对前端界面组件、数据源绑定方式、数据模型、业务逻辑和工作流等都可以自由定义,平台将自动生成代码,开发者也可以添加自己的代码,对程序具有较强的控制能力,因此该方案具备更高的灵活性,可以设计出定制化程度高、逻辑复杂的软件。
由于该方案仍涉及代码开发、部署等技术工作,所以它仍然是一个技术开发平台,需要较高的学习成本,主要价值是提高开发效率,减少重复劳动。
Outsystems 就是采用该方案的典型产品,如下为产品截图:
# 基于模型驱动的应用平台
用户通过可视化方式构建数据模型、视图、权限、工作流等,即可在平台提供的环境中运行,无需编译部署,更像一种傻瓜式的应用搭建平台。平台对各类组件、业务逻辑做了较高层级的封装,因此用户无法随心所欲修改界面风格、交互方式、处理逻辑等。
该方案可以实现完全零代码,对使用者技术要求不高,但需要具备业务抽象、建模能力。主要价值是降低开发门槛、快速适应变化。
明道云、伙伴云等都是此类方案的典型产品,如下为明道云的产品截图:
# 核心要素
绝大部分的企业软件由以下四个部分组成:
- 业务实体:即操作对象,如客户、订单
- 业务活动:即进行何种操作,如采购申请、合同审批
- 业务权限:即何种人拥有何种权限,包括数据查看权限和数据操作权限,如部门经理可以管理所有下属的客户信息,而员工只能管理自己的客户信息
- 统计报表:即从哪些方面量化企业活动情况,如客户增长率、各月销售额趋势
低代码平台将以上进行抽象,支持数据模型、业务流程、用户权限、统计图表,因此可以作为更通用的企业软件解决方案,这四类能力也是任何一个低代码平台都必须具备的核心要素。
# 数据模型
建立数据模型就是提取业务实体的数据特征,抽象为数据表,建立表间关系。制作 ER 图的过程就是数据建模。市面上常见的低代码平台均提供了丰富的控件,可以拖拽完成数据模型搭建。此外,数据模型搭建与表单展示合二为一,每完成一个数据表的创建,就自动生成了该表的增删改查功能及相关页面,进而隐藏了数据库设计、前端开发这些专业技术。其实,这也就是我们常说的表单引擎。
这里顺便提一下,虽然很多低代码平台将数据建模与表单展示合二为一,但通过这种方式自动生成的表单只能实现最基础的增删改查页面,用户对界面展示内容及形式的控制程度很低,无法满足大部分企业软件的需求,所以低代码平台一般还会提供自定义页面功能,用户可根据需要在页面上配置按钮、图表等元素,满足个性化需求。
# 业务流程
业务流程指为了实现某项目标,由多人合作,按照一定的规则、顺序进行的一系列活动,在软件中,业务流程的参与者可以是人,也可以是程序。低代码平台实现了可视化流程配置,用户对触发条件、处理节点、节点参与者进行配置,实现自定义业务流程。
# 用户权限
大部分的低代码平台都采用了非常经典的 RBAC(Role-Based Access Control )模型管理用户权限,简单来说就是将拥有相同权限的用户添加为相同角色,通过为角色分配权限,实现了“用户——角色——权限”的授权模式。由于企业是一个组织,一般都会有部门的概念,所以也可以将部门添加到某个角色,实现“用户——部门——角色——权限”的授权模式。
# 统计图表
统计图表可以类比 Excel 中的透视图,统计图表由数据源、统计规则、展示形式定义,低代码平台也正是遵循这种方式,实现统计图表的可视化配置。
# 流行产品
# OutSystems
OutSystems 是快速应用开发的头号低代码平台,并且是 2018 年 Gartner 高生产力平台的领导者。OutSystems 号称将低代码功能与高级移动功能相结合的唯一解决方案,它支持整个应用程序组合的可视化开发,可轻松与现有系统集成。
# Mendix
Mendix 帮助企业改善创新方式。通过使用可视化模型,在 Mendix 上构建应用程序非常简单,快速且直观,可使开发人员和业务分析人员等众多人员构建强大的应用程序,而无需编写代码。借助模型驱动开发,业务领导者和 IT 部门可以共享语言来快速构建应用程序。
# 顶层设计
由于系统的用户群体是有一定技术基础的开发人员。所以,系统定位是低代码平台,而非零代码平台。
其次,由于系统主要是用于简化基本的页面开发,所以技术路线应该选择:基于模型驱动的应用平台。
最后,由于生成的代码是应用于 Java Web 框架。生成的后端代码是 java 代码;前端代码是基于 vue + element-ui 生态的前端代码。
代码生成规则对应的数据建模:
自动生成前后端代码。
- 后端代码
- Controller
- Service
- ServiceImpl
- Daomybatis
- DaoImpl
- Mapper
- Query
- Dto
- Entity
- xml
- 前端代码
- List
- Form
- Api