【程序员日记】——从业务编排到低代码 | 京东云技术团队

京东云开发者
• 阅读 175

之前总聊微服务,今天换一个话题---低代码。

低代码这个词也是最近这几年很火的概念,尤其是遇到大环境下行,很多大厂和互联网那个公司也在慢慢在低代码方向发力,当然,对于传统项目交付型的软件公司,低代码也具有相当大的吸引力。

如何理解低代码

用一个通俗易懂的说法,就是少写代码,并且降低开发门槛的方式,可以让平民开发者(可以理解为并不一定具有软件技术素质的人员)也能高效快速的构建应用程序。

如果基于这个思路,是不是大家觉得有一些类比?

当计算机刚起步的时候,大家还用打孔卡片来跑程序的时候,这时候一个牛逼的汇编语言可以说就是那个时代的低代码;再到后来C语言的普及,那对于汇编语言来说,C语言简直就是低代码…..以此类比,在我们这个时代,当面向对象的开发语言成为主流的时候,大家不可避免的在思考,是不是可以通过简单的可视化配置或者逻辑图就能实现编程呢?比如产品经理把产品设计好,时序图画好,自动就可以编程可以跑得程序。

命令式 vs 描述式

对于传统的软件开发,我们需要定义数据结构,定义变量,通过一行行命令式的代码,来精准的控制计算机执行每一步操作。这个过程中,对于开发者要求是比较高的,要有计算机运行的基本知识,要有算法的基本能力,而且时常要从计算机角度触发逻辑思考,包括线程池管理,内存管理等问题。这些,无疑都增加了开发者的门槛,同时也会增加工作量。

那低代码的目标就是减少工作量和对底层逻辑的关系,从此目标出发,我们可以构建一种描述式的编程方式。

所谓描述式的编程,就是把业务需求标准化,配置化,最优方案是可视化的配置的方式实现快速开发,这个过程中,开发人员不用关心计算机底层逻辑,只需要描述好数据模型,业务流程即可。

现在已经有很多成熟的低代码平台,比如Mendix这种,对于业务不复杂的情况,能够实现程序的快速构建。但对于很多程序员来说,还是很不适应这种编码方式。对于大多数程序员来说,一个好的低代码框架,反而是更香的那个面包,对于解决眼前的饥饿能够起到立竿见影的效果。

说一下我们熟悉的一些业务场景,包括 工作流引擎,前端页面装修等,这些业务场景已经有了很成熟的低代码框架帮我们解决。比如工作流引擎,当你处理流程审批的业务场景的时候,如果没有工作流引擎,你可能还需要自己用状态机来硬编码你的程序,有了工作流引擎,我们可以实现业务配置化。

而业务编排思想,其实就是从命令式走向描述式的一次探索,所有低代码框架的核心思想就是业务编排能力,通过打造不同的原子,和原子之间的排列组合,从而实现业务能力。

低代码实现路径---业务编排

业务编排思想核心还是业务单元模块化,这个在某种程度跟微服务思想有点不谋而合。通过模块化去解耦复杂业务系统,化繁为简。下面贴一个简单的业务编排架构图:

【程序员日记】——从业务编排到低代码 | 京东云技术团队

1. 核心组件说明

a. 流程引擎,规则引擎和决策表。

这些概念在activiti这种框架中也是耳熟能详的,所以可以看出,业务编排也是依靠流程驱动实现的。只不过activiti关心的是橘色任务流转,比如OA审批流这种,而业务编排关心的事一个复杂业务本身中的业务粒度拆分和装配,例如下单流程,价格规则等等。

b. 上下文管理。

这个也是很重要的,在一个复杂的业务编排过程中,每个独立组件之间不可避免会有数据交互,而这些都交给了上下文处理。对于上下文管理,也有两种方式,一种是流程串联中的上下文传输,类似水流中的小纸船,他会在流程中通过业务控制实现上下文的传递,当然这种在实现和理解上都会更复杂一些。

还有一种方式类似工作台,这里可以做一个类比:n个工人按照一定顺序围绕一张工作台进行零件生产,每个工人都可以从工作台上拿去资源生产自己的零件,而每个工人会将自己生产的零件放在工作台上,同时也可以从工作台上领取别的工人做好的零件。而这个工作台就是上下文, 所有的资源和零件在这个工作台之上是共享的。这种共享上下文的设计思想会让业务实现和理解变得简单,但它的问题在于组件的安全性和约束性,因为资源共享,所以每个组件都可以对资源进行修改,在软件开发中,有时候失去约束性,会在系统迭代的过程中出现变质,这就类似于面向对象编程中的封装性。

2. 案例讲解

这里举个业务编排的例子,我们以商品详情查看为例:

【程序员日记】——从业务编排到低代码 | 京东云技术团队

通过上图可以看出,在商品详情查看这个接口中,包含了商品基本信息查询,库存查询,售后查询,可售性查询等流程,然后最终才得到返回值。

你可以将瀑布流式的代码,转变成以组件为核心概念的代码结构,这种结构的好处是可以任意编排,组件与组件之间是解耦的,组件可以用脚本来定义,组件之间的流转全靠规则来驱动。

可能有的同学会说,这个业务用瀑布是写也问题不大嘛。那我再换一个更复杂一些的业务流程,大家是不是就可以看出业务编排的优势,下面给大家一个商城搜索接口的业务逻辑图:

【程序员日记】——从业务编排到低代码 | 京东云技术团队

上面的案例是笔者在采灵通系统开发中真实的一个案例,笔者最开始是采用瀑布方式实现的该搜索关键字处理逻辑。但之后进行了重构,通过引入开源框架liteFlow的业务编排框架,极大的简化的业务复杂度。基本可以实现流程图即代码的程度。具体代码就不贴在此处了,如果大家该兴趣,可以去研究一下liteflow这个业务编排开源框架。

从业务编排晋升为低代码框架

从业务编排晋升为低代码框架,需要改进几个地方,第一个就是流程节点的Node, 在业务编排中,Node节点是一个可以自定义的业务模块,可以由程序员自行写业务逻辑。业务编排做到的是把复杂的业务变成简单的业务,但简单的业务也是需要开发的。如果我们把简单的业务也原子化和配置化,那么就可以成为一个入门级的低代码框架了,那么,我们的架构该如何调整呢?

【程序员日记】——从业务编排到低代码 | 京东云技术团队

首先我们需要将Node节点晋升为微流程节点,同时需要元数据模型支持。在微流程节点内,我们可以自定义CRUD模块,也可以自定义动作和发布时间,所有的缓存,查询都会定义为一个个的微流程节点,当微流程节点丰富度可以覆盖我们的业务代码需求时,我们就可以是先业务开发的配置化。然后在配合部署管理模块,实现代码的一键发布,这样就实现了一个简单的低代码框架。而这也是所有主流的商用低代码框架的思路。

总结

业务编排是实现低代码的路径之一,但不是唯一路径。尤其是当我看到ChartGPT4.0出来之后,人工智能,可以通过一个网页草图自动生成html代码时,我觉得,这可能才是低代码的最终归宿吧。

作者:京东物流 赵勇萍

内容来源:京东云开发者社区

点赞
收藏
评论区
推荐文章
徐小夕 徐小夕
3年前
2B 领域下的低代码探索之路
前言大家好,我是钉钉宜搭前端一个小团队的负责人,在阿里做了五年的低代码。今天的分享我们不讲技术细节,主要会分享下我们这五年的探索过程和当前的市场分析,希望能给大家带来一个对低代码搭建不一样视角的认识。什么是低代码说起低代码(LowCode)这个词,是在2014年,ForresterResearch第一次正式使用低代码来描述这个市场
低代码开发平台 | 低代码的衍生历程、优势及未来趋势
通过简单的拖拉拽操作,而不用编写复杂的代码,实现少写代码或者不写代码,就能快速高效完成业务目标。低代码平台演进1.低代码概念低代码是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法,具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。2.低代码衍生历
保卫大萝卜 保卫大萝卜
2年前
面对质疑,“ 低代码 ” 站起来了!
近几年,低代码开发成为了行业内的热点。当然,每当一个新事物出现时,总有人对它褒贬不一。有人说,低代码是“毒瘤”现实业务应用的场景极其复杂,不是低代码能解决的;如果低代码面向小白用户,那么最后到底由谁来编写代码?又有人说,低代码帮技术人员减少不必要的技术复杂度以及重复率,使得技术人员重心放在核心的业务逻辑上;低代码的对象并不完全面向入门小白,而是面向业务流程设
一种面向后端的微服务低代码平台架构设计
近期参加公司组织的极客中餐厅训练营,我们所在的小组接到的课题是微服务的低代码平台架构设计。目标是:结合京东业务研发实际情况,针对后端研发人员,设计一个微服务低代码平台,助力更高效低交付业务需求。现已结业,将我在本次项目中沉淀设计出的设计文档整理成文,期待与大家有进一步的碰撞沟通
Low-Code,一定“low”吗?
本文将重点介绍低代码相关知识,包括低代码的定义与意义、相关概念、行业发展等,同时介绍京东的低代码工具,期望能帮助大家更好地认识与理解低代码。
企业级飞速低代码开发平台 | 产品介绍 | APass平台 | 全场景适用
​1、低代码是什么低代码通常是指APaas产品,通过为开发者提供可视化的应用开发环境,降低或去除应用开发对原生代码编写的需求量,进而实现便捷构建应用程序的一种解决方案。因此,低代码平台也常备成为APaas平台。广义上低代码概念涵盖所有能够完成代码的集成,减少代码开发的应用过程和服务,但狭义上低代码的概念更倾向定位满足企业业务端应用需求,通过可视化界面,利用少
企业级飞速低代码开发平台 | 低代码并不意味着低风险
在过去的几年中,低代码和无代码工具以及平台在企业中兴起。2021年,Gartner魔力象限在关于低代码的报告中指出,41%的非IT从业人员使用低代码/无代码工具来定制、构建数据,或提出技术解决方案。同时Gartner预测到2025年底,将有一半的新增低代码用户来自从事非IT行业的商业客户。​低代码/无代码工具提供支持拖放的交互界面,使得即使非程序员也能够创
飞速创软 | 传统IT开发 vs 低代码开发,究竟鹿死谁手?
​随着低代码开发逐步进入到人们的视野,企业对低代码的认识也在不断发生着变化,尤其对于企业数字化转型来说,低代码开发将降本增效做到了极致。然而,传统的开发模式是当下企业的主流应用,从传统模式进行转变需要一个过程。那么,相比于传统开发模式,低代码开发有哪些优势呢?传统IT开发与低代码开发两者之间又有何区别?传统IT开发是什么?传统IT开发是专业IT技术人员根据
飞速 | 巨头下场,生态聚合,低代码不再是个伪命题
和许多坐在风口上的概念一样,“低代码”似乎在一夕间变得火热起来,但也饱受争议。“低代码将替代开发者”、“低代码是伪命题”的说法,频频被业内人士拿来讨论。如今,随着更多企业的入局,中国低代码市场显现出巨大的增长空间,“该不该做低代码”已不再是个问题。近日,字节跳动收购低代码厂商“黑帕云”,钉钉提出在低代码APaaS的基础上进一步做BPaaS(Business
京东云开发者 京东云开发者
9个月前
Ui2Code+ChatGPT助力低代码搭建 | 京东云技术团队
前言低代码开发平台(LCDP),是低代码或无代码通过快速搭建配置的方式完成一个应用程序的开发与上线,可视化低代码就是可视化的DSL,它的优点更多的是来源可视化,相对的,它的局限性也还是来源于可视化,复杂的业务逻辑用低代码可能会更加复杂。低代码应该是特定领域