都在吹低代码,我们找已“发育”十多年的 UBML 聊了聊

一君_ 发布于 03/15 13:18
阅读 9K+
收藏 27

近日,低代码建模语言 UBML 正式开放源代码。UBML 相当于低代码开发平台的 SDK,是浪潮 iGIX 低代码建模体系的内核。

低代码的概念被认为最早衍生于上世纪 80 年代的“第四代编程语言”4GL,紧接着是 2000 年出现的 VPL 可视化编程语言。与早期这些开发环境类似,现如今流行的低代码开发平台基于模型驱动设计,自动代码生成和可视化编程的原理,可节省开发投入。

基于模型驱动,各个低代码平台之间的较量实际也成了对不同模型的考验。UBML 团队认为,目前有一些小规模厂商或成长型企业的低代码平台,受限于资源投入,在架构设计和功能覆盖上可能会有所不足;互联网公司的低代码平台又缺少对于企业需求的深度理解;而管理软件厂商的低代码平台更贴近企业的实际需求,依靠浪潮云 ERP 在企业服务市场的积淀,UBML 模型的丰富度和深度是其主要优势。

同时 UBML 也提出了“模型即源码”的发展理念。UBML 包含开发语言无关性的建模标准(UBML-Standard),内置了基于 UBML 标准的全栈业务模型(UBML-Models),并提供了可与模型进行全生命周期交互的开发服务与套件(UBML-SDK)及支撑模型运行的运行时框架(UBML-Runtime)。

目前 UBML-Standard、UBML-Models,以及面向后端开发的核心模型BE(Business-Entity)、VO(View-Model)和服务模型中的 EAPI(External-API)部分已经开源,后续将开放出更多组件。借此机会,OSCHINA 邀请 UBML 开发团队,请他们分享 UBML 的一些设计理念,适用场景及技术特性,并解答开发者对 UBML 及低代码概念的一些疑问。

用 UBML 能做什么?

低代码开发概念发展至今,已经分化出两个不同的方向,一是为开发人员服务,通过可视化拖拽的方式完成大部分工作,开发者只需要编写少量的代码,也就是通常所说的低代码开发平台;二是面向无编程基础的人群,主要围绕企业数据和业务管理需求,通过可视化方式设计数据结构、前端界面等,不需要任何代码编程,也被称为零代码开发。

UBML 主要面向的是低代码开发平台的开发者,可应用于软件设计、开发、测试、发布、部署的各个环节。

UBML 核心开发者郝志北介绍,低代码平台也应是按照“二八原则”来设计的。对于基本的增删改查等常规的业务处理,都是不需要手写代码的,比如一个简单的订单业务,从后端建表、业务逻辑开发到开放 RESTful API,再到前端的界面展现,这些功能都可以通过低代码的方式自动完成。而一些很难用规则去表达的领域化的业务逻辑,算法、规则等,需要开发人员手工扩展。

UBML 默认提供的 SDK 与 Runtime 是基于 Java 实现的,此外,UBML 还可通过开发语言无关性的代码标准 UBML-Standard,支持跨语言开发需求。UBML-Standard 是一套高层次领域模型建模体系,其中的模型是由 DSL 描述的(如JSON、XML),通过一份 UBML 模型,可根据具体要求,生成或动态解析为不同开发语言(比如 Java、JS、C# 等)运行。

图:UBML 提供的 JIT 即时编译机制

在整个工业互联网技术体系中,UBML 被设计用于aPaaS (应用程序开发平台)层,属于 IaaS 和 SaaS 之间的 PaaS 层。基于浪潮的经验与积累,UBML 目前支持的建模范围以及提供的配套组件,主要是面向工业应用中的“经营管理类”应用。

未来, UBML 也打算延伸和扩展在 OT 侧的能力,在 IoT、智能化开发、数据驱动型应用等多个方向深入发展,通过浪潮、开放原子开源基金会和广大社区开发者多方协同共建,探索工业互联网领域的完整解决方案。

模型即源码

UBML 基于“模型即源码”的理念,将模型视作源代码进行工程化管理,可以与主流研发过程管理工具进行集成,支持 DevOps。同时,UBML 还提供了几十种涵盖从前端到后端的全栈业务模型体系。

针对如何理解“模型即源码”的理念,以及各种模型之间的配合使用,郝志北做了更详细的解释。

“模型即源码”的理念是指,UBML 将模型本身也视作源码的一部分进行统一管理,可以将包含模型在内的所有开发产物与 DevOps 流水线进行集成,打通开发-构建-打包-测试-部署完整的流程,模型对应的制品也会部署到对应的制品库中进行统一管理。

全栈业务模型体系

对于 UBML 的 “全栈模型体系”,郝志北表示,低代码平台的核心能力就是模型的丰富度和沉淀的厚度,即表述能力和业务沉淀能力。

UBML 从应用分层架构出发,结合了微服务架构、领域驱动设计理念,对各层做了细分与抽象,形成了覆盖持久化层、领域层、业务流程层、BFF 层、UI 层的全栈模型体系,这几十种模型中,不同模型承担着相对单一的职责,在建模开发的过程中,各模型上下文清晰;便于模型间集成并对公共内容进行复用,而且模型体系具有良好的扩展性。

以开发一个相对完整的简单应用为例来进行说明,包含简单前端界面、后台逻辑,同时提供标准 RESTful API 供调用集成。

首先对场景中涉及到的后端实体进行建模,这里用到的模型是业务实体(BE,Business-Entity),新建 BE 时,会自动创建实体对应的数据库表模型-数据库对象(DBO,DataBase-Object),有了实体作为数据源后,还需新建一个前端展示层的模型-表单(Form),表单上展示的字段信息可能经由 BE 字段裁剪或由多个 BE 编排而来,为实现这个效果,需要视图模型(VO,View-Model),对单个或多个 BE 进行裁剪或组装,创建 VO 时还会自动创建出供前端调用的、描述 RESTful API 的模型-外部服务(External-API)。

基于这几种模型,就可以完成一个最基本的开发流程。

值得一提的是,UBML 建模体系中的模型能够与 DDD(领域驱动设计) 分层架构中的几个核心概念是对应匹配的:

业务实体(Business-Entity,BE)对应 DDD 中领域层的概念,提供了实体、业务字段(对应 DDD 值对象)的实体结构描述以及业务实体操作(对应 DDD 的领域服务描述),承载了核心业务逻辑;

视图对象(View-Model,VO)对应应用服务层,承载了具体的业务场景,可以组装多个业务实体或者作为业务实体的子集,提供了面向不同业务场景的建模封装;

表单(Form,FRM)对应展现层:提供 UI 界面建模能力;

此外 UBML 还提供了内部服务(Internal-API,IAPI)、外部服务(External-API,EAPI)、持久化层(Database-Object,DBO)等基础设施的建模能力。

 图:UBML 对于 DDD 架构的落地实践

“我们认为一个系统需要有一套可持续沉淀的、承载后端核心业务逻辑的框架,这套框架可以持续沉淀和积累领域知识,是相对稳定的,可以很好解决前端演化更快的问题,支撑企业级骨干业务系统,DDD 设计理念与此思路是可以很好匹配的”

UBML 前身及开源规划

实际上,UBML 的历史最早可以追溯到 2004 年。

2004 至 2019 年间,浪潮的上一代低代码开发平台 GSP 就采用了模型驱动的低代码开发技术,其内置的模型体系是 UBML 的前身。

2019年,浪潮基于云原生、前后端分离、领域驱动设计、跨平台等架构与设计理念,形成了 UBML 低代码建模体系,并应用到了新一代产品 iGIX 当中。

目前 UBML 已从 iGIX 中进行剥离并捐赠给开放原子开源基金会,启动 iGIX 开源进程。

“首先期望通过浪潮、基金会、社区多方努力,将 UBML 建成低代码建模领域的事实标准,后续我们会开放 UBML-Designer 等更多低代码工具,基于 UBML 形成 Open iGIX 项目,形成社区版低代码开发平台,建立广泛的开发者、模型、应用生态,商业版主要的是在技术支持和部分高级特性上与社区版有所差异。”郝志北介绍,Open iGIX 将主要面向企业级应用的开发人员,包括专业开发人员和非专业开发人员,比如实施顾问、业务专家等。

目前,UBML 开发团队也规划了一系列的开源运营活动:2021 年,UBML 将会举行线上线下的宣讲与布道活动,为社区开发者进行技术赋能;也会广泛邀请业内技术专家为大家传道授业、答疑解惑;同时也计划与国内高校联合举办 UBML 走进校园的活动;

后续,随着 UBML Designer 等更多工具的开源和社区版低代码开发平台的逐步开放,其团队也将举办 Open iGIX 应用开发大赛,帮助开发者都能快速高效地使用 UBML 构建属于自己的应用。

低代码是伪命题吗?

虽然低代码概念已经流行多年,但质疑低代码的声音一直存在。如低代码的模式是否会存在缺陷因此制约使用者的工作?低代码发展下去是否会造成开发人员失业等等?作为低代码建模语言的 UBML 自然也会面对这些问题。

郝志北认为,低代码开发平台为开发者提供了可视化建模工具,通常还提供广泛的平台能力,可以屏蔽日常编码中的大量重复机械工作。

如在 UBML 提供的源码生成型模式中,自动生成的程序源码是直接提供给开发者供其使用或扩展的,这对于编码工作量的降低是切实可见的。因此,低代码开发方式实际上是给了开发者一种更高效率的选择,它应作为一种开发利器,而并非是一种制约。

此外,软件的生产效率是从“软件作坊”->“软件工厂”进行转换的,其中软件自动化的趋势是不可取代的,这不仅代表着软件生产力的提高,同时带来了很多价值和机会。比如可以让不同层次的开发者分工更明确,可省去重复化的工作,是把开发人员从繁琐重复的低效工作中解放出来,聚焦于价值更大的有创造性、且不可复制的工作。

加载中
2
稳价保

想到了 Dreamwaver

辉火
辉火
想到了 frontpage
2
亡灵序曲
亡灵序曲

甲方: 给我改成五彩斑斓的黑

哈库纳
哈库纳
回复 @亡灵序曲 : 随着心情变换颜色的手机壳 这个一看就不靠谱了。 来设计一款屏保软件,要能识别手机壳颜色然后动态变换 屏保。:joy: :joy:
舌尖跳舞
舌尖跳舞
回复 @亡灵序曲 : 你在为难我胖虎.jpg
亡灵序曲
亡灵序曲
回复 @舌尖跳舞 : 那随着心情变换颜色的手机壳要怎么实现呢?
舌尖跳舞
舌尖跳舞
回复 @亡灵序曲 : 你为啥只局限于纯色中呢,你要明白五彩斑斓的黑这是需求,不是专业术语,你不能指望着客户和你交流的都是专业术语,你应该举例:随着心情变换颜色的手机壳。 知乎上随便一搜:https://www.zhihu.com/search?type=content&q=%E4%BA%94%E5%BD%A9%E6%96%91%E6%96%93%E7%9A%84%E9%BB%91
亡灵序曲
亡灵序曲
回复 @舌尖跳舞 : 请问 这个颜色的色值是多少
下一页
1
不羁的醒与醉
不羁的醒与醉

是否能低代码完全取决于产品经理的脑子。

s
shuaizai88
实话
红山药
你总能遇到一些不按常理出牌且没有什么卵用的设计。
1
10进制宇宙
10进制宇宙

和IDE自动生成get, set, toString一样, 不是没有代码,只是从人写变成了机器自动生成

1
李大胖胖汉
李大胖胖汉

低代码平台本身就不具备可重用性。用平台的人得单独培训,依然一个人弄成一个样子,人员水平要求并没有降低。都不用想平台存在得这样那样得潜规则,坑。别问我怎么知道的。

JetWings
JetWings
参考以前的普元,X5等,培训成本高,市面基本找不到人,程序员只能完全依赖这些平台提供的组件和技术栈,做2年基本就废了,特别现在技术更新换代那么快。重用性高往往定制就难,UML,模型驱动这些概念早就有了,看似很好,但实践起来的难度很高,也没真正火起来流行通用的技术,比较鸡肋。
1
_snake_
_snake_

低代码怎么也有15年历史了吧,so tm what?

_snake_
_snake_
回复 @lurong97 : 然后那
lurong97
lurong97
我印象中10年前就特别成熟了
1
mymbrooks
mymbrooks

不看好 业务越来越复杂,尤其是特色的国内需求不写代码简直是找死

0
翠翠
翠翠

并没有那么多“价值更大的有创造性、且不可复制的工作”,所以必然会造成某些开发者失业的事实。

乌龟壳
乌龟壳
自然会有,以前用 CGI 做网站,后面有 PHP 极大提高效率,也不见得 PHP 工作少,人的欲望是无止境的,不能站在当前开发速度慢的前提下去评估有多少创造性工作
0
ExtremeTalk
ExtremeTalk
暗黑模式看不了呢
0
费振龙
费振龙

浪潮做的有些项目能否用这个重构一次,现在看浪潮做的健康码系统,业务办理系统好像都很原始。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部