您好!欢迎光临亚博AG娱乐!
联系我们contact us
  • 某某文化有限公司
  • 手机:13800138***
  • 联系人:王经理
  • 电话:401-234-5678
  • 邮箱:admin@admin.com
  • 地址:山东省临沂市沂蒙国际财富中心
当前位置:首页 >> 亚博AG娱乐
亚博AG娱乐

一种关于低代码平台(LCDP)建设实践与设计思路

来源:本站 发布时间:2022-08-23 访问量:5

  一种关于低代码平台(LCDP)建设实践与设计思路负责菜鸟商业中心CRM系统开发已经有1年多时间,过程中发现有一个痛点:业务线特别多,每个业务线对同一个页面都有个性化布局和不同的字段需求,而我所在的团队就3个人,在资源有限的情况下如何支撑好呢?刚开始,我们是为各业务线单独定制页面和业务逻辑,1到2个业务线还能应付过来,目前已经发展有十几业务线,且每个业务线下还有子业务线,这种个性化的开发多了,工作量就大了,系统维护压力就巨大。所以就孕育而生了—— 销售魔方类低代码产品,与其说低代码产品,还不如说是一种解决千人千面的个性化业务搭建的前后端一体的解决方案。

  本文就降本的情况下,我是如何低成本构建产品能力去支撑多条业务线、多租户,我先以小实践成果展示,再过度分享我后续升级的设计思路。

  低代码开发平台(Low-Code Development Platform)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法(参考可视编程语言),使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。低代码开发平台(LCDP)的正式名称直到2014年6月才正式确定,整个低代码开发领域却可以追溯到更早前第四代编程语言和快速应用开发工具。

  上图是魔方1.0 MVP版本基本运行原理,以及上线后降本增效的数据,业务开发从60人日缩短到20人日,年省成本180人日。

  还有一些小问题,基于这个版本,我们又不断的升级,提升产品体验、能力提升和业务覆盖。

  后续我们可做到新页面上线分钟,新增字段无需模型变更和无需java代码发布,复杂页面前端也能做到0代码。

  数据模块的千行千面(千人千面),根据不同身份执行不同的业务技术逻辑和服务编排

  page一键创建,在没有新的业务组建和新的module情况无需开发接入,0代码上线,运营同学自行配置页面。

  前端组件复用,在没有新前端组件,前端无需参与开发,后端只需编写module对应的业务接口。

  实现module可复用,module数据渲染、数据写入,查询条件、浮层、半推页面、页面操作

  新增字段扩展0代码,模型字段可以自定义,动态扩展,可定义来自本地数据库、远程HSF接口数据

  运营:运营可以根据自己的业务身份,定义独有的page实例,自由选择页面的版块和需要展现和编辑的字段

  技术:定义元数据,module,编写module group逻辑执行单元代码

  一般低代码平台,主要分为两部分,前端页面的渲染和后端服务接口绑定(服务编排等)。

  大的逻辑差不多,因为我这个主要还是具有行业特色的类低代码产品,所以是紧扣行业特殊性构建。

  因为我负责的是后端,所以前端我就不过多叙述,大概的逻辑如下两张图,大致意思是前端的页面渲染就如同做菜一样,用户根据自己的需求,可选择菜谱、食材和烹饪方式,不用关心烹饪过程,也不用自己亲自烹饪,都叫由厨师烹饪,厨师会根据你提供的菜谱和食材做好,最后将美食给你端上桌。

  同理,前端渲染引擎会根据数据协议、组件库、渲染方式,动态渲染成页面,如果有业务数据将会动态绑定。

  我们这有个特殊性,页面是通过后端给定schema,由前端根据这个schema进行页面渲染。后端通过识别出用户的身份,通过接口输出给前端千人千面的个性化schema,前端就通过schema配置动态去渲染。

  同时,还会会有一个业务数据接口,用于绑定前端页面填充业务数据或提交表单数据。

  每一个组件绑定业务数据接口后,就不是单纯的前端组件了,就具有行业业务属性的组件和页面,这样在这个领域是可以被业务系统直接复用,无需重新编写业务代码。

  这里有一个难点,每次新增业务线(租户)后就有新增字段需求,而且字段的差异还挺多,约占80%,在不修改模型的前提下,如何做到?

  3.通过定义一个特殊feature字段,存储类型为json,约定好协议,扩展字段按照不同行业存储在json内。优点就是轻量。

  mysql5.7上,在相同数据量的情况下,虚拟索引和普通索引查询效率基本一致 在大数据量情况下不推荐用聚合函数计算json数据,但是如果json key建立了虚拟列,可以对该虚拟列进行聚合操作,效率跟普通列一样。

  这个过程基本描述了一个页面是如何定义出来的,以及动态模型的扩展(模型驱动),从模型到页面组件的布局定义。

  行业个性化配置则通过对OriginalPage实例化成InstancePage而得。这样就能动态生成千行千面。

  这个借鉴了Spring容器启动时的设计思路,类似实例化、初始化,属性数据填充。

  origin是定义的原始页面,可以理解成java 的Class类,可以构建多个实例页面。

  页面的组成单元,一个页面由多个module组成。代表页面显示区域单元,有多个前端组件组成,是页面容器的布局单元。

  module_code 全局唯一,实例化后的module可被复用、重写、实现多态。

  modules 数据结构为一个 B+tree,只有叶子节点是有具体的实体数据

  为了保证页面的数据填充效率,所以并不是一个module绑定一个服务接口,而是一个执行单元对应一个或多个module,负责多个module的数据渲染和数据写入,moduleGroup executor是一个页面计算单元。

  页面上的每一个module就自动绑定了后端的业务接口,实现了前后端一体化搭建。

  module只代表一个VO层的部分显示片段,要想达到字段可以动态扩展需要定义一层实体模型的映射关系,这样才能找到统一的feature对象去解析,完成DO、DTO、VO的相互自动转换。

  当module需要动态扩展的时候,从实体模型中去选择已经定义好的field。

  因为我们的VO也是动态生成的,这样就不需要因为新增一个字段而进行模型变更或者代码发布。即实现0代码上线。

  每一个模块背后都会绑定一个 moduleGroup executor ,业务开发只需通过对这个executor实现,即可快速完成开发上线,整个过程无需前端参与。简单的字段添加也无需发布上线,我们会通过动态扩展映射背后的DO扩展。

  整个产品我理解更多的是贴近业务而产生的一种前后端一体化,低成本快速构建方案。如果要做大,做全,可以参考salesforce元数据驱动模型。

  优点很明显,就是真的强大,业务都不需要建任何表,想怎么扩展模型就怎么扩展,此架构一般适用于与SAAS产品。

  缺点也很明显,完全失去业务语义,开发成本和维护成本高,需要一套强大的sql管理和解析、实时的ETL数据架构、检索能力,后期成本也非常大。

  魔方这套方案搭建工时约为50人日,两个后端加一个前端,解决了十几个业务线多租户的个性化接入,一定程度实现了模型驱动,千人千面的能力,我认为是典型小投入大产出吧,希望对正遇到同样问题的同学有一定的帮助和启发,限于个人能力,最终要搞大的需要有专业的团队支撑,也欢迎指正和探讨。

  🔥通过部署流行 Web 框架掌握 Serverless 技术 🔥解析 RocketMQ 业务消息——“事务消息” 在阿里做前端程序员,我是这样规划的 三端一体计算方案:Unify SQL Engine

  🔥 企业上云|数字化转型经验分享 阿里云主长春:助力“专精特新”,数字科技陪伴企业成长 云钉低代码新模式、新能力、新机遇 推文科技:AI 解决方案助力内容出海

  🔥AI 的价值探索:如何拓展商业边界? 🔥三星堆奇幻之旅:只有云计算才能带来的体验 不止能上路,更能做好服务:自动驾驶产品规模化的问题定义 自动驾驶,未来的移动智能载体? 如何提出关键问题 支撑10万人同时在线互动,是实现元宇宙的基本前提?