为什么很多开发团队吐槽低代码开发平台,其中大致归结了几个方面的原因:
1、使用过后会降低对技术的依赖度,工具人的倾向更加严重
2、目前大部分的低代码都是一次性的低代码,仅仅是在第一次构建模型的时候,可以生成一些基础代码,在系统能够升级后期维护本质上还是源码开发,没有本质的区别
3、很多优秀的低代码开发平台是黑盒,不透明,担心使用后技术被绑架
4、担心低代码开发平台的局限性和扩展性存在问题
......
其实这些问题并不是什么深刻的问题,第一点是无法避免的,大势所趋,高效率的工具肯定会逐步渗透到传统的手工打造的行业,这个也是现在大家很少能看到“铁匠”的原因。 第三、四点,以JVS快速开发平台为例,是可以提供源码级交付的,就不用担心,且整体框架支持 “零代码”+“原生代码”的融合开发模式(这里就不深入讲解实现方式),所以不是问题,那么我们今天详细捋一捋第二条,一次性的低代码和持续化的低代码的关键点在哪里?
聊这个问题之前,先要聊下 “数据持久化” 让低代码触手可及,以mybatis 为例说一下,它主要在数据库和java程序之间构建一套可以快速操作的标准入口,形成我们所谓的增删改查(CRUD),可以支持程序通过动态调用的方式去操作数据库,而无需详细的了解数据库的具体SQL操作。
如上图所示,mybatis 、mybatis plus 把这个过程做得很好,把库表对应的CRUD的接口代码做得非常不错,技术人员只需要建库建表与写一些业务逻辑调用,中间机械重复性的工作都交给数据持久的工具去干掉了,这样势必提升很大一部分的工作效率。
但随着低代码的概念不断持续发酵与升华,有跟多的管理者希望不仅仅是生成中间的CRUD代码,能否把另外两端的代码也生成了,这个也就是 “零代码”的出发点了,而且这种模式有个bug一旦加入了业务代码后,就很难再进行二次配置化,所以这也成为“一次性”的低代码,如果我们要实现“持续化”低代码 如何做呢?
以这个为出发点,那么有几个问题是无法回避的:
1、数据库表需要动态构建,最好是根据界面上的业务需求,自动创建、修改底层的库表接口,数据库表的柔性化就是一个问题。
2、需要将原来的部署代码实现功能转变为配置数据+功能动态渲染, 实现功能的热插拔,也就是生成的不再是代码,而是配置数据,那么需要构建多个能力引擎把配置数据 渲染成功能(多个之间如何确定边界,这个我们可以专门聊聊),从而实现无需启停环境实现功能所配即所得。
3、各个引擎之间如何更好的做好数据联动与参数控制,从而实现业务能力的联动性配置。
我们再次以JVS快速开发平台为例,JVS构建了一个套动态的数据模型的引擎,它核心的功能:
1、基于用户配置的功能字段,动态创建、修改底层的数据库表结构
基于表单自动构建库表结构:
基于列表页的自动构建
2、实现多个引擎(列表、表单、逻辑、流程)之间的数据联动使用
数据模型是各个能力引擎之间对数据加工、存储的核心,也是各个引擎能做好联动使用的基础,而且可以做到数据层与页面级的分层级控制。而且有了动态的数据模型,传统的代码(前端、后端)也是可以接入到配置的过程中来,从而实现0代码+100%代码的融合使用。
3、向低代码配置提供持久化的数据增删改查 ,那么让整体内可以实现业务逻辑的配置化,通过可视化的操作配置,实现各种服务的能力拼装。
所以,当前的低代码,能启动灵魂且画龙点睛的 是动态的数据模型。
JVS基础框架开源地址:https://gitee.com/software-minister/jvs