- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
之前总聊微服务,今天换一个话题---低代码.
低代码这个词也是最近这几年很火的概念,尤其是遇到大环境下行,很多大厂和互联网那个公司也在慢慢在低代码方向发力,当然,对于传统项目交付型的软件公司,低代码也具有相当大的吸引力.
用一个通俗易懂的说法,就是少写代码,并且降低开发门槛的方式,可以让平民开发者(可以理解为并不一定具有软件技术素质的人员)也能高效快速的构建应用程序.
如果基于这个思路,是不是大家觉得有一些类比?
当计算机刚起步的时候,大家还用打孔卡片来跑程序的时候,这时候一个牛逼的汇编语言可以说就是那个时代的低代码;再到后来C语言的普及,那对于汇编语言来说,C语言简直就是低代码…..以此类比,在我们这个时代,当面向对象的开发语言成为主流的时候,大家不可避免的在思考,是不是可以通过简单的可视化配置或者逻辑图就能实现编程呢?比如产品经理把产品设计好,时序图画好,自动就可以编程可以跑得程序.
对于传统的软件开发,我们需要定义数据结构,定义变量,通过一行行命令式的代码,来精准的控制计算机执行每一步操作。这个过程中,对于开发者要求是比较高的,要有计算机运行的基本知识,要有算法的基本能力,而且时常要从计算机角度触发逻辑思考,包括线程池管理,内存管理等问题。这些,无疑都增加了开发者的门槛,同时也会增加工作量.
那低代码的目标就是减少工作量和对底层逻辑的关系,从此目标出发,我们可以构建一种描述式的编程方式.
所谓描述式的编程,就是把业务需求标准化,配置化,最优方案是可视化的配置的方式实现快速开发,这个过程中,开发人员不用关心计算机底层逻辑,只需要描述好数据模型,业务流程即可.
现在已经有很多成熟的低代码平台,比如Mendix这种,对于业务不复杂的情况,能够实现程序的快速构建。但对于很多程序员来说,还是很不适应这种编码方式。对于大多数程序员来说,一个好的低代码框架,反而是更香的那个面包,对于解决眼前的饥饿能够起到立竿见影的效果.
说一下我们熟悉的一些业务场景,包括 工作流引擎,前端页面装修等,这些业务场景已经有了很成熟的低代码框架帮我们解决。比如工作流引擎,当你处理流程审批的业务场景的时候,如果没有工作流引擎,你可能还需要自己用状态机来硬编码你的程序,有了工作流引擎,我们可以实现业务配置化.
而业务编排思想,其实就是从命令式走向描述式的一次探索,所有低代码框架的核心思想就是业务编排能力,通过打造不同的原子,和原子之间的排列组合,从而实现业务能力.
业务编排思想核心还是业务单元模块化,这个在某种程度跟微服务思想有点不谋而合。通过模块化去解耦复杂业务系统,化繁为简。下面贴一个简单的业务编排架构图:
这些概念在activiti这种框架中也是耳熟能详的,所以可以看出,业务编排也是依靠流程驱动实现的。只不过activiti关心的是橘色任务流转,比如OA审批流这种,而业务编排关心的事一个复杂业务本身中的业务粒度拆分和装配,例如下单流程,价格规则等等.
这个也是很重要的,在一个复杂的业务编排过程中,每个独立组件之间不可避免会有数据交互,而这些都交给了上下文处理。对于上下文管理,也有两种方式,一种是流程串联中的上下文传输,类似水流中的小纸船,他会在流程中通过业务控制实现上下文的传递,当然这种在实现和理解上都会更复杂一些.
还有一种方式类似工作台,这里可以做一个类比:n个工人按照一定顺序围绕一张工作台进行零件生产,每个工人都可以从工作台上拿去资源生产自己的零件,而每个工人会将自己生产的零件放在工作台上,同时也可以从工作台上领取别的工人做好的零件。而这个工作台就是上下文, 所有的资源和零件在这个工作台之上是共享的。这种共享上下文的设计思想会让业务实现和理解变得简单,但它的问题在于组件的安全性和约束性,因为资源共享,所以每个组件都可以对资源进行修改,在软件开发中,有时候失去约束性,会在系统迭代的过程中出现变质,这就类似于面向对象编程中的封装性.
这里举个业务编排的例子,我们以商品详情查看为例:
通过上图可以看出,在商品详情查看这个接口中,包含了商品基本信息查询,库存查询,售后查询,可售性查询等流程,然后最终才得到返回值.
你可以将瀑布流式的代码,转变成以组件为核心概念的代码结构,这种结构的好处是可以任意编排,组件与组件之间是解耦的,组件可以用脚本来定义,组件之间的流转全靠规则来驱动.
可能有的同学会说,这个业务用瀑布是写也问题不大嘛。那我再换一个更复杂一些的业务流程,大家是不是就可以看出业务编排的优势,下面给大家一个商城搜索接口的业务逻辑图:
上面的案例是笔者在采灵通系统开发中真实的一个案例,笔者最开始是采用瀑布方式实现的该搜索关键字处理逻辑。但之后进行了重构,通过引入开源框架liteFlow的业务编排框架,极大的简化的业务复杂度。基本可以实现流程图即代码的程度。具体代码就不贴在此处了,如果大家该兴趣,可以去研究一下liteflow这个业务编排开源框架.
从业务编排晋升为低代码框架,需要改进几个地方,第一个就是流程节点的Node, 在业务编排中,Node节点是一个可以自定义的业务模块,可以由程序员自行写业务逻辑。业务编排做到的是把复杂的业务变成简单的业务,但简单的业务也是需要开发的。如果我们把简单的业务也原子化和配置化,那么就可以成为一个入门级的低代码框架了,那么,我们的架构该如何调整呢?
首先我们需要将Node节点晋升为微流程节点,同时需要元数据模型支持。在微流程节点内,我们可以自定义CRUD模块,也可以自定义动作和发布时间,所有的缓存,查询都会定义为一个个的微流程节点,当微流程节点丰富度可以覆盖我们的业务代码需求时,我们就可以是先业务开发的配置化。然后在配合部署管理模块,实现代码的一键发布,这样就实现了一个简单的低代码框架。而这也是所有主流的商用低代码框架的思路.
业务编排是实现低代码的路径之一,但不是唯一路径。尤其是当我看到ChartGPT4.0出来之后,人工智能,可以通过一个网页草图自动生成html代码时,我觉得,这可能才是低代码的最终归宿吧.
作者:京东物流 赵勇萍 。
内容来源:京东云开发者社区 。
最后此篇关于【程序员日记】---从业务编排到低代码的文章就讲到这里了,如果你想了解更多关于【程序员日记】---从业务编排到低代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在这里感觉有些不对劲,所以我希望社区提供意见 - 也许我以错误的方式处理这个问题...... 问:是否适合使用传统的基础架构日志框架(如 log4net)来记录业务事件? 当我说业务事件时,我的意思
技术也好,业务也罢; 01 【什么是业务?】 对于那些久经职场的人,也很难一句话说明白; 业务,作为工作中绝对的核心点,即便在一个公司待的足够久,
三天研发,两天设计; 01 【优先做设计方案】 职场中的那些魔幻操作,研发最烦的是哪个? 作为一个数年且资深的互联网普通开发,可以来说明一下为什么
业务、系统、接口(interface)、持久化类是什么意思?用一些例子解释一下? 最佳答案 业务可能是应用程序中所有功能部分发生的部分(即计算或规则) 系统是您的操作系统 接口(interface),
我无法创建带有指向移动应用的外部链接的简单广告。我已正确设置访问权限,可以创建广告系列、广告集、加载图像,但在创建广告期间出现错误: Ads and ad creatives must be asso
我是软件工程专业的学生,现在我正在为我的期末项目工作,安排在交易日进行商务配对。 这个想法是将卖家(开发人员)和买家(有经济能力的人)在一起。 算法应该像“快速约会”。 假设我有 15 张 table
我们只需按照以下说明在 AWS Cloudformation 上部署企业 WhatsApp API: AWS WhatsApp API 所以一切正常,部署正确完成,问题出在“SSL 配置”选项上,我们
我的应用因为以下原因被拒绝了 Guideline 3.2 - Business We found that your app is not appropriate for the App Store
您好,我想在我的网络应用程序中使用 WhatsApp 业务 API。我已经在 postman 中测试过了。 每当在 WhatsApp 选项卡下的 Facebook 业务页面中运行示例 curl 代码时
我是 Skype for Business 技术的新手,我正在尝试部署一个我愿意与 Skype WebSDK 和 AppSDK 一起使用的服务器。 起初我尝试使用Skype进行在线商务,但websdk
Apple 开发人员以此为由拒绝了我的应用。 “业务 - 3.1.1您的应用程序包含一个帐户注册功能,该功能被视为对外部机制的访问,以便在应用程序中使用购买或订阅。此功能不符合 App Store 审
我正在玩 Realm for Android。 我喜欢自动更新对象的想法,但我对它的软件架构有顾虑。 我已经看到许多提议的架构都指定了一个层来处理数据/数据库访问,理想情况下,更高层不会知道有关数据库
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 10 个月前。 Impro
我正在尝试设置 Whatsapp 业务 API。 引用Link用于设置。 我正在使用 Windows 10 操作系统。 -- 仅供引用。 在初始设置部分,使用命令 docker-compose up
我正在尝试使用 Facebook Business SDK 创建一个 facebook Adaccount .但是当我使用方法 createAdAccount 时,它会给我一个错误。请参阅下面的图片。
我想写一个概念证明 MonoMac使用 c# 和 Razor 呈现 html“ View ”的应用程序。 这可能吗? 如果没有,是否有人推荐与 Razor 的简单性相比的任何其他模板引擎。如果必须的话
无法解析 ':business:diary@debug/compileClasspath': Could not resolve project :fun:push. 的依赖关系 无法解析项目:fun
当我尝试在 Visual Studio Professional 2015 14.0.23107.0 中打开某些 XML 文件时,XML 编辑器出现白屏并显示以下文本: 为什么我不能编辑这个文件?此项
我是一名优秀的程序员,十分优秀!