基于模型驱动低代码平台的实现原理
目前国外内主流的低代码开发平台有:奥哲氚云、云程、ClickPaaS、阿里宜搭、华为AppCube、腾讯微搭、百度爱速搭、网易轻舟、金蝶苍穹、普元平台、浪潮iGIX平台、泛微平台、炎黄盈动BPM、蓝凌低代码平台、伙伴云、明道云、简道云、道一云、轻流、搭搭云、白码、数式科技、华炎魔方、维格表、优速云、OutSystems、Mendix、微软Power Platform、Unqork等。
基于模型驱动的可视化开发是当前低代码平台实现的主要实现技术,为什么基于模型驱动开发成为了低代码的主要技术途径,本文阐述其基本的实现原理和逻辑。
一、应用构成要素
我们先看一下汽车的基本构造,由车身、发动机、方向盘等多个零部件构成,因为它是一个工业产品,有实物存在,摸得着看得见,所以大家很容易理解。日本丰田汽车是如何做到自动化流水线生产的,本质上是把产品xBOM定义得很清晰,而且完全结构化了,才能用数字化技术生产汽车产品。
其实,软件系统也是有构成要素的,只不过软件系统跟汽车相比,比较抽象,难以理解,但是想做到低代码/零代码方式开发应用系统,必须对应用系统构成要素进行抽象,层层拆解,直到最小的元素,其实也是一个产品结构树BOM。反过来,如果每个最小的元素都可以通过拖拉拽可视化方式开发,然后可以把这些元素通过配置方式组合起来,就达到了低代码平台开发的要求。
我们大体上可以把软件系统分成:数据、界面、流程、逻辑、菜单这几个一级构成要素,每个一级要素继续分解成二级构成要素,依次类推。以界面为例,界面可以由表单、视图、图表构成,表单由布局、控件、样式、事件构成,控件由复选框、下拉框、输入框等元素构成。通过这个逻辑,大家就能理解低代码平台为什么需要表单设计器了。如果数据、界面、流程、逻辑、菜单都是通过可视化方式配置完成的,那么就形成了低代码平台。
二、模型驱动原理
模型驱动是一种软件开发方法,利用一系列模型的设计、映射、引用、转换,来驱动软件的需求、设计、实现的软件工程过程。
以上是低代码平台表单引擎原理图,主要包括模型建模工具(表单设计器)、模型解析引擎、模型实例化引擎、界面渲染引擎、模型库、实例库几部分构成,实际产品开发中部分引擎可以合并为一个组件。
以下通过一个业务场景举例说明其逻辑,假设用户要设计一个请假申请单。
第一步:首先要打开表单建模工具,通过拖拉拽方式设计表单,格式是Json或xml均可,设计完成后,提交保存表单模型,调用后端模型解析引擎,模型解析引擎会解析json或xml,生成表单模型元数据,插入到模型数据库中,此时就完成了表单设计工作。
第二步:表单发布后,用户打开URL链接,请求表单界面渲染引擎,界面渲染引擎通过模型解析引擎得到模型定义对象,进而完成页面动态渲染。
第三步:用户录入数据,点击提交,请求模型实例化引擎,并把数据插入到数据库业务表中。
那么基于模型驱动开发的原理有什么好处呢?
- 快速设计原型系统,项目经理在需求调研时,直接设计高保真原型系统;
- 快速开发业务应用,通过拖拉拽方式比硬编码方式大幅提升开发效率;
- 响应需求高动态变化,比如:客户调整样式、加字段、改流程等经常发生;
- 模型积累和重用,模型可以导入导出,模型可以分享,相比代码更具备复用性;
三、低代码核心功能
1、业务建模:基于元数据模型驱动开发的思想,提供灵活、稳定的元数据模型建模与管理,通过数据实体、属性、关系等元数据配置响应业务需求变化,提供了在线的数据库实体建模和E-R建模功能,支持单表、一对一、一对多关系。
2、表单建模:在线可视化化表单设计器可快速建符合业务的表单,用于数据采集和流程审批,在线预览,所见即所得。
3、页面建模:提供可视化配置功能,支持单表、主子表、树等多种模板,基于组件化组合思想,可构建复杂页面功能,并可配置页面查询框、操作按钮等功能。
4、流程建模:BPMN2.0规范,可视化拖拉拽流程设计;会签、加签、跳转、退回、撤销等多种流程操作,配置即用;用户、部门、角色、岗位、 关系等多种选人方式,符合中国特色组织选人需求。
5、报表建模:报表设计器是一款在线可视化报表建模工具,提供了汇总表、明细表、柱形图、条形图、饼图、折线图、面积图、雷达图、指标图等多种种常用图表,可以组合及联动使用。设计器采用拖拽操作的风格,简单易用,能够实时展示配置效果,一目了然。
6、门户建模:拖拉拽方式设计首页,无需编码;多种布局风格,可自由布局;支持多角色门户,不同角色不同首页;在线预览,所见即所得。
7、大屏建模:无需写代码,在线可视化设计大屏,支持图表、表格、媒体等20+常用组件,支持静态数据、HTTP、SQL等多种获取数据方式。
8、移动建模:可以在线设计流程和表单,开发应用,无需手写代码,可自动生成移动端界面,极大提升了移动应用开发效率。
9、数据服务化:无需开发Controller、Service、Dao、Mapper、XML、VO等Java对象,一键即可生成HTTP API接口,跟Swagger无缝结合,生成标准RESTful接口文档。
参考:
云程 | 云BPM,云程BPM,低代码平台,低代码开发平台,开源流程引擎,Camunda,flowable,业务流程管理,activiti,智能表单,电子表单,可视化开发,零代码开发,基础平台,流程PaaS,流程SaaS
2022年国内外主流的低代码平台_大龄码农有梦想的博客-CSDN博客
基于模型驱动低代码平台的实现原理相关推荐
- Jeecg-Boot 2.1.4 版本发布,基于SpringBoot低代码平台
项目介绍 JeecgBoot是一款基于代码生成器的JAVA低代码开发平台,开源界"小普元"超越传统商业企业级开发平台!采用前后端分离架构:SpringBoot 2.x,Ant De ...
- 基于Appian低代码平台开发一个SpaceX网站
文章目录 Appian 背景摘要 Appian Designer SpaceX网站开发 新建Application 配置应用权限 创建Record Type Appian 背景摘要 国内几乎没有App ...
- 低代码平台,企业业务创新的最佳路径
数字化转型的必然趋势及面临的问题 数字经济时代,数字化转型是企业在行业赛道上领先的必经之路,然而,数字化转型升级的道路并不是畅通无阻的,也不是企业单枪匹马就能干成的,各个企业在转型过程中都或多或少会遇 ...
- 低代码平台,企业服务新战场
文/智能相对论(aixdlun) 作者/陈壹 如果说数字化创新是破土而出的幼苗,那么数字化技术普及就是其不可或缺的生长环境. 当数字化技术能力得到下放,让应用开发像搭乐高玩具一样,让大众都能参与进来, ...
- JeecgBoot 3.1.0 版本发布,基于代码生成器的企业级低代码平台
项目介绍 JeecgBoot是一款企业级的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,J ...
- JeecgBoot 2.4 微服务正式版发布,基于SpringBoot的低代码平台
项目介绍 JeecgBoot 是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Sh ...
- JeecgBoot 2.4.2 积木报表版本发布,基于SpringBoot的低代码平台
项目介绍 JeecgBoot是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shi ...
- JeecgBoot 3.2.0 版本发布,基于代码生成器的企业级低代码平台
项目介绍 JeecgBoot是一款企业级的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,J ...
- 基于低代码平台(Low Code Platform)开发中小企业信息化项目
前言:中小企业信息化需求强烈,对于开发中小企业信息化项目的软件工作和程序员来说,如何根据中小企业的特点,快速理解其信息化项目的需求并及时交付项目,是一个值得关注和研讨的话题. 最近几年来,随着全球经济 ...
- 基于低代码平台实现的政务督办管理系统有哪些特色功能?
为进一步优化政务环境,完善抓落实工作机制,提高效能效率,确保各单位间决策部署落地生根,需全面建立实施"13710"工作制度,通过MyApps低代码开发平台实现的政务督办管理系统,可 ...
最新文章
- TF-IDF算法百度附有代码 有解吧实现中文分词
- Unknown: Failed to get convolution algorithm. This is probably because cuDNN
- 在线python编程编译器-编译器python
- IE弹出窗口显示URL地址栏
- wxWidgets:wxMenuEvent类用法
- 如何利用Callgraph生成函数调用图?
- java中byte,String,InputStream之间的转换
- mysql sql 备份数据_mysql怎么进行数据库备份和还原,以及自动备份
- notepad++查看16进制文件
- 创业吧,兄弟--记者眼中的中关村创业大街创业热潮纪实
- 真·杂项:资本论阅读笔记(随缘更新)
- 应用层故事难讲 公链集体押注DeFi背后 是黔驴技穷的无奈之举?
- 使用逆火日志分析器简单分析日志
- html 手机录视频,手机怎么录制视频 怎么用手机录视频?
- 【读书笔记】概率图模型——基于R语言(一)
- 为什么没有好用的Android游戏引擎?
- Jmeter之常用断言总结篇
- CSS中的常见单位(px,%,em,rem,vw,vh,vmax,vmin,calc)
- java自定义环境变量
- 4路红外循迹模块使用教程
热门文章
- 建筑智能化资质升级需要的企业工程业绩
- 戴尔服务器系统备份还原工具,DELL备份恢复系统的小工具 Dell DataSafe Local Backup[网络技术]...
- win10录屏_win10录屏打不开怎么办?怎么给win10录制屏幕视频?
- Linux安装VIM执行sudo apt-get install vim 现在没有可用的软件包但是它被其他软件包用了
- 利用DHT网络原理制作bt采集蜘蛛
- 51单片机蓝牙小车程序详解
- 学生用计算机如何算角度,如何用windows计算器计算角度的正弦值?
- vue中使用iconfont图标
- Adobe Illustrator 中的路径查找器
- julia Pkg.add() 安装package时卡着不动慢怎么办