如何设计一个低代码平台

article/2025/10/3 0:56:49

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

一、面向领域

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

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

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

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

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

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

二、引擎化

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

  • 数据引擎

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

  • 表单引擎

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

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

 

  • 流程引擎

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

  • 规则引擎

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

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

  • 报表引擎

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

 

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

 

  • 高级宏语言

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

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

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

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

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

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

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

业务逻辑在智能网中,对利用积木式组件(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低代码平台就是分层架构,如下图所示。

 

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

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


http://chatgpt.dhexx.cn/article/e2bxyui4.shtml

相关文章

QT纯代码设计UI界面Demo

目录 一、前言 二、界面 三、源码简析 四、Demo/源码 一、前言 UI的设计方法有几种: ①一种是使用Qt Designer,也就是可视化设计,这在小型项目中常见,优点就是可观简便; ②另一种就是纯代码设计UI,也…

Verilog RTL 代码设计新手上路

1. 做一个4选1的mux,并且进行波形仿真 和2选1的mux对比,观察资源消耗的变化: 实验分析:4选1的mux实际上就是在2选1的mux上进行拓展,选用2位的控制信号控制4位输入信号的选择输出 实验代码设计如下: …

代码设计流程

一、需求分析 1、需求分析的三层境界:实现者、分析者、引导者。 2、在需求中提取到合适的用例(以抽卡系统为例) 3、用例分析法 5W1H分析法 对上面的“抽卡”用例进行分析如下 5W内容What抽取卡牌Who玩家When游戏服务器开启期间Where抽卡…

代码设计的内功——代码设计原则

引言 好代码是设计出来的,也是重构出来的,更是不断迭代出来的。在我们接到需求,经过概要设计过后就要着手进行编码了。但是在实际编码之前,我们还需要进行领域分层设计以及代码结构设计。那么怎么样才能设计出来比较优雅的代码结构…

二维傅里叶变换频谱图的含义

二维傅里叶变换频谱图的含义 在一维傅里叶变换得到的频谱图中,每个点表示其对应的幅度频率与其坐标对应的简谐波。二位傅里叶变换的频谱图,简谐波的振幅由对应点处对应的亮度表示,每一个点表示的波形为其对应的横纵坐标所表示的简谐波的叠加…

二维傅里叶变换深度研究-图像与其频域关系

一:二维傅里叶变换的数学原理 1.2D离散傅里叶公式解释: 那么,其F(u,v) 本质就是: 后续说明时的”频域”均指的其傅里叶功率谱,后面为了演示方便,所有频域图均经过了fftshift移动到中心位置。 2.2D傅里叶频…

使用matlab对图像进行二维傅里叶变换

这学期选了《图像工程基础》这门课,课上老师留了一个作业:对图像进行二维傅里叶变换。 现在我使用matlab解决这个问题 1.实验基本指令 首先我试了一下matlab图像处理的基本指令 原图: 经过以下指令后 将图片导入matlab后,命名…

二维离散傅里叶变换

在学完一维的傅里叶变换后,紧接着就是二维的傅里叶变换了。直接上干货吧!!! 途中会用到opencv读取与显示图片。 一. 公式 M表示图像的行数,N表示图像的列数。 经过欧拉公式可以得一下形式,这样就可以轻松…

Matlab图像的二维傅里叶变换频谱图特点研究

一、先放一些相关的结论&#xff1a; 1、傅里叶变换的幅值称为傅里叶谱或频谱。 2、F(u)的零值位置与“盒状”函数的宽度W成反比。 3、卷积定理&#xff1a;空间域两个函数的卷积的傅里叶变换等于两个函数的傅里叶变换在频率域中的乘积。f(t)*h(t) <> H(u)F(u) 4、采…

OpenCV学习——图像二值化处理及二维傅里叶变换

小古在本学期选修了《计算机视觉原理与应用》&#xff0c;最近有一份作业 —— 利用matlab或者OpenCV对图像进行一些处理&#xff0c;由于完全没有接触过matlab和OpenCV,但是学习了一些python语言&#xff0c;所以便利用opencv-python来完成作业。 1 图像二值化处理 1.1 图像…

二维傅里叶变换是怎么进行的?

1.首先回顾一下一维FT 通俗来讲&#xff0c;一维傅里叶变换是将一个一维的信号分解成若干个三角波。 对于一个三角波而言&#xff0c;需要三个参数来确定它&#xff1a;频率,幅度 A &#xff0c;相位。因此在频域中&#xff0c;一维坐标代表频率&#xff0c;而每个坐标对应的…

二维傅里叶变换需知

from: https://blog.csdn.net/wenhao_ir/article/details/51037744 代码如下&#xff0c;这个代码是实现灰度图像作二维傅里叶变换后的非线性变换哈~ clear all; Iimread(coins.png); Ffft2((im2double(I))); Ffftshift(F); Fabs(F); Tlog(F1); subplot(1,2,1); imshow(F,[]…

傅里叶级数、一维傅里叶变换到二维傅里叶变换数理推导

傅里叶级数、一维傅里叶变换到二维傅里叶变换数理推导 参考资料&#xff1a; 如何理解傅里叶级数公式 二重傅里叶级数 从傅里叶级数到傅里叶变换 高维傅里叶变换的推导 连续傅里叶变换和离散傅里叶变换 二维离散傅里叶变换 IDL实现傅里叶变换 想要用傅里叶变换的思维处理一个…

二维傅里叶变换简化方式

在处理二维矩阵时&#xff0c;常想着如何把时域转换到频域来处理&#xff0c;因此翻来了以往数分里面的常用的傅里叶(Fourier Transform); &#xff08;Notes:一下公式中 M,N分别为二维矩阵的列数和行数&#xff0c;f(x,y) 代表改二维矩阵&#xff0c;F(u,v)为转换后的矩阵&…

C++中fftw库二维傅里叶变换笔记

目录 1.相关基础知识参考链接 2.二维傅里叶变换作用简介 3.FFTW二维傅里叶变换输出分析 &#xff08;1&#xff09;原始输出数据​ &#xff08;2&#xff09;频谱中心化后的输出数据 4.频谱图绘制 5.二维傅里叶变换逆变换 6.从输出结果中分离各平面波并画出波形平面图…

二维傅里叶变换的理解和使用

目录 似模似样的前言一维傅里叶二维傅里叶 似模似样的前言 最近的瑕疵检测项目需要在有纹理的产品上做很细致的检测。由于当前做项目使用的还是halcon居多&#xff0c;目前知道的方法还是傅里叶变换比较靠谱。 但仅靠halcon自带的样例并不能很好的理解和使用傅里叶&#xff0…

二维傅里叶变换频谱图的直观理解

众所周知&#xff1a;频谱中心代表低频&#xff0c;四周代表高频。 问&#xff1a;那&#xff08;u&#xff0c;v&#xff09;一点代表什么&#xff1f; 答&#xff1a; 1.当为水平方向的正弦图片时&#xff0c;二维傅里叶变换后&#xff0c;其只有u方向的频谱值&#xff1b; 2…

Matlab:二维傅里叶变换

Matlab:二维傅里叶变换 二维傅里叶变换二维衍射模式fft2 函数将二维数据变换为频率空间。例如,您可以变换二维光学掩膜以揭示其衍射模式。 二维傅里叶变换 以下公式定义 mn 矩阵 X 的离散傅里叶变换 Y。 i 是虚数单位,p 和 j 是值范围从 0 到 m–1 的索引,q 和 k 是值范围…

matlab二维傅里叶变换ffshift,形象理解二维傅里叶变换

点击上方“机器学习与生成对抗网络”,关注"星标" 获取有趣、好玩的前沿干货! 来自 | 知乎 阿姆斯特朗 链接 | https://zhuanlan.zhihu.com/p/110026009 文仅交流,侵删 1.回顾一下一维FT 公式: 通俗来讲,一维傅里叶变换是将一个一维的信号分解成若干个复指数波 …

傅里叶变换(二维离散傅里叶变换)

离散二维傅里叶变换 一常用性质&#xff1a; 可分离性、周期性和共轭对称性、平移性、旋转性质、卷积与相关定理&#xff1b; &#xff08;1&#xff09;可分离性&#xff1a; 二维离散傅里叶变换DFT可分离性的基本思想是DFT可分离为两次一维DFT。因此可以用通过计算两次一维…