传统低代码平台的挑战

低代码平台是最近几年比较热门的一个话题。当传统的开发模式面临成本高、周期长等困境的时候,低代码开发工具的只需要点击几下,非编码人员也可以构建简单的应用程序的解决方案看起来很不错。很多低代码厂商抓住了客户这一需求点,开始大力的营销着低代码开发工具,投资机构也将目光瞄准在这一赛道。

这几年,市面上涌现了大量非常优秀的低代码SaaS平台。他们无一例外的都在宣传“无码化”、“拖拉拽方式配置”、“业务人员开发应用”等等。这些特点无一不是在体现应用搭建快、配置简单、应用上线快。也的确在特定场景下,这些平台能够快速的实现一个应用的搭建。但不同类型的业务、不同体量的企业,他们的业务复杂度会差异非常大。而且,业务规则也会随着企业规模的增长,也会变得越来越复杂。

从CTO/CIO的视角,除了应用搭建快、上线快这些基本能力外,还需要考量:

  • 业务的可持续发展:当业务随着企业的发展,其业务规则复杂度也越来越高时,之前基于低代码平台构建的应用是否能很好的对业务进行支撑?复杂的业务逻辑,低代码平台是否支持?复杂的业务配置,业务人员是否能够胜任?繁琐的配置,开发人员是否愿意去用?
  • 业务安全生产:传统的低代码平台,其实是一个面向页面表单、流程、数据、规则的高可配置系统。有些页面表单、流程在配置之后,就立刻生效了。这就存在了巨大的安全隐患,页面表单的修改,往往是要配合流程的修改、规则的修改,甚至是数据模型、周边相关集成服务的修改。并在统一测试无误后,才能发布上线。平台对于业务的安全生产的支持,是基本属性。
  • 组织建设与人才获取:业务人员的本职工作,是确保进行业务规划制定、业务规则梳理、业务执行落地并确保能拿到结果。简单好用的低代码平台,可以让业务人员通过简单配置,快速制作原型DEMO,并做业务逻辑确认。但是,业务人员并不能为IT系统的高效、稳定负责。这是典型的 “能做”与“该不该做”的问题,这也是CTO/CIO在信息化部门建设,对业务长期发展支撑,要想清楚的。

从开发人员视角看,传统的低代码平台所谓的可视化配置语言,只能算是一种高阶的业务抽象DSL。而且,这种抽象之后的DSL并不是完备的。所以,从开发者视角看,他们需要一个具备高度可扩展的、非封闭的应用快速开发平台。以下一些问题,是开发者对低代码平台的一些担忧:

  • 代码开发平台封装的组件是否限制了程序员的使用,对于不够丰富的组件库(永远不会完全丰富),组件的完善是否只能依赖低代码厂商?
  • 低代码平台是否提供了语言级高可扩展能力,并且扩展的业务插件能和表单配置、流程配置、数据配置形成一个共同体,可以进行统一的版本管控、发布管控?
  • 低代码平台是否对安全生产提供支撑,可以做到开发态、测试态、生产态的环境隔离以及流水线方式发布?
  • 低代码平台是否足够健壮,能做到随着业务的发展,热点应用可以方便的升容或者缩容?
  • 对于已经配置并发布的应用,后期的运维是否方便?

纪元:无代码/低代码/轻代码三位一体的应用快速开发平台

纪元(产品官网) 作为国内首创的无代码(No Code)、低代码(Low Code)以及轻代码(Lite Code)三位一体的业务快速开发平台,针对业务快速成长、大型企业数字化转型中的复杂业务逻辑,提供了高可扩展的插件化机制。纪元在模型、表单、流程上提供了大量的可扩展点。企业IT部门(或者ISV)可基于这些可扩展点,对模型处理、表单渲染、流程处理进行逻辑定制与扩展。这些业务扩展逻辑能以插件化、云原生方式进行部署。随着业务量的增长,可以根据业务量进行升容缩容。

基于应用开发新模式,让应用搭建方便快捷,复杂业务定制也游刃有余。纪元拥有表单、流程、表格、自动化、插件开发等核心功能。通过拖拉拽的操作方式,让企业快速搭建出负责自身需求的应用。灵活与高可扩展的纪元,有助于企业规范业务流程、促进团队协作、实现业务精细化跟踪与管理,让商业创新更简单!

纪元应用快速开发平台包含9大功能:表单设计、模型设计、表格设计、流程设计、插件开发、模板中心、环境管理、版本管理、自动化。

这里,我暂不对纪元的表单设计、流程设计、模型设计进行展开介绍。我先重点介绍纪元所特有的,轻代码方式高可扩展的业务插件特性。

纪元:业务插件开发特性介绍

应用业务插件开通

对于购买了纪元标准版的用户,在纪元中创建完应用后,可以进入应用,并切换到“插件管理”模块。如果此时还没有为该应用生成插件代码仓库,会显示如下信息:

我们点击“开通”按钮,此时会提示要针对页面、模型、任务等哪些功能做扩展,如下:

我们全部勾选后,继续点击”开通“按钮,系统会为该应用分配一个代码仓库。插件代码仓库创建完毕后,会显示如下界面:

我们可以把分配的代码仓库地址,在本地执行命令,把代码下载下来:

git clone http://oauth2:sYxxxxx@gitlab.hiforce.net/yuzhenxin/hr

然后,我们可以用IDEA打开这个应用插件工程,我们可以看到纪元已经默认给大家生成了针对流程、界面、模型的扩展点空白实现。如下:

我们的开发同学可以针对扩展点门面里面的扩展点进行 Override,即可实现以轻量级代码的方式进行复杂业务逻辑的扩展。比如,我们可以在任务创建保存到数据库之前做最终校验、额外复杂业务信息存取等。

应用插件部署

基于应用扩展点构建的业务插件代码,是需要编译并部署到插件容器中的。如果业务插件还没有购买容器,首先要先购买容器并进行绑定。如下图所示:

点击“去购买”,我们可以根据业务需要来买不同规格的业务容器,比如CPU数、内存大小、副本数以及时长,如下:

点击下一步进入容器资源购买结算页,在完成付费后,即可完成容器资源的购买。

在容器资源购买成功后,我们点击“更改”按钮,可以为当前应用插件的开发环境、测试环境以及线上环境进行资源绑定。如下:

点击确定后,即可完整应用插件环境与容器资源的绑定。

对于开发好的业务插件,可以点击“发布”,在弹出的对话框中,选择要发布的版本分支后,点击“发布”按钮。完成将业务插件编译、打包并部署到已购买的容器中。

纪元会用流水线方式,对开发、测试、生产环境分别进行部署。在业务插件发布详情页,我们可以看发布的过程以及发布日志,如下:

在纪元帮助手册中,介绍了一些如何基于SDK快速进行应用定制的样例。比如基于任务SDK进行业务插件开发,可参见:https://hiforce.yuque.com/ws9v9d/era/wvcrnd4x50avgaxk

业务定制插件样例

样例1:定制页面标题

我们在页面的可视化设计器中,把需要通过轻代码方式进行定制的页面,启动插件功能。该选项位置如下:

只有启动了“插件功能”的页面,才能以轻代码的方式对该页面用SDK方式进行定制扩展。

页面屏幕(Screen)在渲染时,对于一些复杂的业务逻辑,开发者可以通过代码方式,对页面信息进行自定义。最终,纪元会根据最终调整的页面内容进行渲染展示。

我们以下面这个轻代码样例应用为例,他的原始Header中的标题是"Origin Title”:

我们对这个页面的标题,用轻代码方式进行自定义:

插件代码提交后,编译并部署到开发环境中,我们可以看到运行结果已经是我们定制之后的结果。如下:

样例2:定制任务流水号

默认情况,任务的流水号KEY的生成时按照时间戳方式生成的,时间戳格式流水号大致如下:

但在实际应用中,有的业务时希望用特定的前缀、特定内容以及后缀进行流水号生成。比如,“TT-20221221-0001” 就是要求TT作为前缀、中间是当天日期、后面四位是当天的流水(递增)。

那么我们可以通过定制任务SDK中提供的扩展点,实现自定义流水号规则:

插件代码提交后,编译并部署到开发环境中,我们可以看到新创建的任务的流水号,已经变成我们定制之后的结果。如下:

总结

通过上面这一个特性的介绍,我相信读者已经可以看到纪元应用快速开发平台,在传统低代码平台基础之上,提供了面向企业级高可扩展,并具有DevOps安全生产能力的应用快速开发能力。纪元经历了几十个大型项目(千万级)的实战,各位有兴趣的朋友,不妨试一试。