如何设计一个低代码平台

编者按:近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢?

一、面向领域

低代码的本质是面向领域的,所以低代码平台也是面向领域的,例如面向游戏的、面向业务管理的、面向网站建设的。

什么是领域,即大家熟知的DDD(领域驱动设计,Domain-driven design,缩写 DDD),是一种通过将实现连接到持续进化的模型来满足复杂需求的软件开发方法。

领域是为需求分析工作服务的,目的是挖掘、分析、理解业务工作的本质。设计低代码平台的目的是把一些业务领域内要解决的问题进行抽象。对于不同的用户群体来说,低代码平台解决的主要问题也不尽相同。

本次讨论主要是业务管理领域,低代码平台面向的业务管理领域通常分为两个方面,政府的和企业的。在业务管理领域的低代码平台,通过可视化界面,利用少量代码搭建简单应用或复杂企业级应用,常见为APaaS产品,例如国内老厂商天翎。

对于政府机构,天翎低代码平台通过提供方便使用和构建的智能化解决方案来帮助政府。平台提供一个拖放式的可视化界面,可供各部门用于自动化流程和构建应用程序。在满足不同部门和业务的定制化要求前提下,节约了成本和时间。

对于企业机构,天翎低代码平台帮助企业将本增效,推动企业数字化转型。企业可以快速构建最低限度可行的产品,即时部署这些应用程序,帮助企业实现持续的创新和扩展。

二、引擎化

低码平台的核心是抽象业务需求,满足具体应用设计,提供统一规范的应用引擎,所以优秀的一个低代码平台必定是引擎化的,核心引擎主要包括:数据引擎、表单引擎、流程引擎、规则引擎、报表引擎、高级宏语言等。

  • 数据引擎

数据引擎,即建模引擎。基于模型驱动,低代码平台内置功能强大的建模引擎,能为企业快速创建智能化、移动化的应用程序。通过实体、数据结构、枚举等构建低代码数据模型。可视化定义数据之间的关联关系,平台自动生成数据库表和通用接口。

  • 表单引擎

基于模板创建页面或在空白页面上通过拖、拉、拽组件的方式完成页面搭建。平台提供标准化组件,以及组件扩展能力,可维护自有组件库。

例如:MyApps提供“印刷”和“托拽”两种流程业务表单设计模式,印刷模式编辑简单明了,拖拽式编辑快速便捷,控件调用区、表单内容区和属性配置区一览无余。

如何设计一个低代码平台_第1张图片

 

  • 流程引擎

涵盖了流程设计、流程运行、管理维护、统计分析与流程优化等各类工具,帮助企业快速部署、有效监控并持续优化业务流程。低代码平台集成流程引擎,支持BPMN2.0规范的业务流程开发,并在此基础上进行了模型和符号标准化。

  • 规则引擎

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。

使用规则引擎可以通过降低实现复杂业务逻辑的组件的复杂性,降低应用程序的维护和可扩展性成本。

  • 报表引擎

无需开发人员帮助,业务人员也能配置出功能强大的统计报表。报表运行时自动按当前用户权限过滤报表数据,动态显示业务统计结果。可通过拖拽组件的方式实现折线图、柱状图、饼状图、散点图等,有的平台可实现支持地图/冒泡/蜘蛛/瀑布/温度/旭日/漏斗图等炫酷的图表样式。

如何设计一个低代码平台_第2张图片

 

也可在BI产品上完成从数据到模型再到报表的设计,低代码可以直接将生成的复杂报表集成到应用中。例如,MyApps智能报表引擎支持数据大屏将数据指标动态直观化展示,辅以电子围栏和红黄绿灯等个性化功能。

如何设计一个低代码平台_第3张图片

 

  • 高级宏语言

宏语言是一类编程语言,可以用来描述软件和解决软件移植等问题,用于书写宏指命和宏定义的表示法和规则。其全部或多数计算是由扩展宏完成的,扩展宏可用于扩展原软件的功能,满足用户自身需求。

低代码平台基于高级宏语言设计,使用可视化设计开发图形界面,具备灵活的拓展性,不仅能满足企业的基本软件开发需求,而且具备成长属性,可以持续为政企软件开发提速和组织力升级赋能。

三、技术逻辑和业务逻辑分离

  • 技术逻辑和业务逻辑的概念

什么是技术逻辑,业务逻辑?

技术逻辑一种应用逻辑,研究如何将逻辑理论应用于各种技术系统,特别是应用于对自动化机器(如计算机、自动翻译机等)进行综合分析。

它们和业务无关,仅仅代表应用中的一种技术能力。如,我的数据库表如何设计,验证谁来做,是前后端分离还是不分离,数据是从前端来,还是从后端给。

业务逻辑在智能网中,对利用积木式组件(SIB)和基本呼叫处理(BCP)模块的组合来完成每项业务特征的过程描述。(智能网是用于生成和提供电信新业务的网路结构体系。主要由业务交换点、业务控制点、业务管理点和业务创建点组成。主要目标是实现新业务的快速引入。)

它们和业务相关,代表应用中的一种业务能力。如,填入电话,邮箱,头像图片,图片大小的规定,以及短信验证码。

  • 技术逻辑和业务逻辑的分离的必要性

技术逻辑是为了解决业务逻辑问题的,只有在实现业务、给人们带来便利的前提下,技术的存在才有意义,即业务决定技术、业务统领技术。另一方面,没有技术逻辑,业务逻辑就无法被虚拟化,生产效率就很难有效提升。随着软件技术和业务发展到一定程度,在项目管理工作上必须进行的一种升级,技术逻辑和业务逻辑分离。

为什么要分离?

最优认知方式——整体到细节

美国心理学家乔治·A·米勒(George Armitage Miller)曾在《金字塔原理》中指出:大多数大脑的短期记忆无法一次容纳约7个以上的记忆项目,有的人可能一次能记住9个项目,而有的人则只能记住5个。大脑比较容易记住的是3个项目,当然最容易记住的是1个项目。

这意味着,当大脑面对一个新的事物时,如果有多个项目,会通过逻辑模式将这些事物组织起来,即认识整体。

当一个开发人员面对一个新项目的时,首先会从整体(业务逻辑)去了解这个项目,然后再会去看每个功能具体的实现细节(技术细节/逻辑)是什么。如果先从细节入手,很容易因缺少全局观而忽视重点。

当把业务逻辑的代码和具体的技术实现进行分离,由整体到细节,先了解业务逻辑,再去做技术细节的展开,这能让开发人员更容易意识到真正的关注点所在,而不是沉溺于技术和编程细节,更有利于认知和技术的实现。

  • 技术逻辑和业务逻辑的分离的实现——分层设计

如何实现技术逻辑和业务逻辑的分离?把他们进行分区,将业务逻辑放到一个口袋里,将技术细节放到一个口袋里,实现分层设计。

分层设计,即多层架构。多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略。每一层都可以单独部署。将整个项目自下而上的分为:数据持久(数据访问)层,逻辑(业务)层,UI(展现)层。

1)数据访问层(Infrastructure Layer):负责将数据持久化响应的数据存储设备上,如DataBase,Txt,Excel等。

2)业务层(Service Layer):封装了核心业务逻辑,负责处理为满足软件需求而订制的一系列的逻辑与业务。

3)展示层(Presentation Layer):负责与用户交互的界面,良好的用户体验多是使用在这里。

MyApps低代码平台就是分层架构,如下图所示。

如何设计一个低代码平台_第4张图片

 

最上面是展现层,支持第三方应用、业务系统、企业微信、APP等,用户可以从这里获得良好的的交互体验;通过展现层进入业务层,MyApps采用的是SpringBoot微服务架构,并且平台分成运行时服务(Runtime-service)、设计时服务(Designtime-service)、授权时服务(Authtime-service),不同服务执行不同工作,以保证平台性能处于最好状态。

最下面是数据访问层,主要是一些中间件服务,包含数据库服务、数据缓存服务、消息队列表服务、文件存储服务。

你可能感兴趣的:(低代码)