百分点大数据技术团队(低代码平台实践)

白日放歌须纵酒,青春作伴好还乡。这篇文章主要讲述百分点大数据技术团队:低代码平台实践相关的知识,希望能为你提供帮助。

编者按 :近两年来,低代码逐步出现在人们的视野中,特别是伴随着我国政府、企业的数字化转型,一些专注于数字化转型的厂商在集聚了相当的势能之后,大力推动了低代码的发展和行业普及。据市场调查显示,2020年,国内低代码平台市场规模已达到18.5亿左右,正处于高速增长期。在疫情期间,对无纸化办公、信息采集的需求更加迫切,也催生了大量低代码应用的场景,如居民健康信息采集、出行上报等。随着国内厂商的大力投入、低代码技术的日趋成熟,以及行业经验的积累,越来越多的应用场景将会被挖掘,未来的低代码市场将会维持较高的增长。 本文中,百分点大数据技术团队介绍了低代码相关的内容,包括低代码的概念、核心能力技术路线及应用场景等,以及百分点低代码平台的建设实践与特点。
?
一、低代码平台概述
低代码开发平台(low-code development platform,简称LCDP),是指通过提供可视化编程组件以及软件全生命周期管理能力,大大降低开发者开发代码量、开发难度和维护成本的开发者生产力工具。
需要注意的是,这里开发者的定义不同于传统的软件开发者,低代码由于其出色的可视化能力,大大地降低了开发一款应用的门槛,一个没有任何编程基础的公司职员也可以作为低代码平台的开发者。
从低代码的概念中,我们可以总结出低代码平台需要具备的三大核心能力:
1. 全栈可视化编程
全栈可视化编程的重点有两方面,第一是可视化,可视化不仅包括编程过程中,通过托拉拽组件和配置完成应用编写的操作,也包括了平台提供的所见即所得的能力;第二是全栈,传统的IDE也有部分是支持可视化开发能力的,但是低代码平台更强调的是全栈,是整个软件开发中的界面、数据、逻辑,以及系统运维全部可视化。
2. 全生命周期管理
作为一个一站式应用管理平台,低代码支持应用的完整生命周期管理,从应用的设计阶段开始,经历开发、构建、测试、部署,以及上线后的运维。
3. 低代码扩展能力
低代码开发平台在部分场景下仍然离不开代码,因此平台必须支持在必要的情况下通过少量代码来应对应用需求的灵活扩展,例如添加自定义的组件、允许用户定制CSS样式、专用加密规则和非标准需求等。
二、技术路线及应用场景
根据低代码的技术设计和适用场景,可以将低代码路线分为零代码平台和低代码平台:

随着企业发展,为减少业务部门之间频繁的对接需求,提高业务效率,低代码平台作为一款软件开发工具,可覆盖大多数领域和众多行业的不同应用场景,根据场景类型可分为通用性业务场景、企业个性化定制场景和企业细分业务应用场景。

这里以“请假申请”为例,介绍如何用低代码进行开发,请假申请四步走如下所示:
Step1:构建表单

Step2:构建流程

Step3:提交申请

Step4:申请审批

?
三、百分点低代码平台实践
百分点低代码平台,产品名:Clever Builder,选取的是BPM流程表单型路线。我们选择BPM型低代码平台,主要出于以下几点考虑:
  • BPM的产品成熟度较高,在OA,CRM等领域有非常丰富的应用场景,且场景通用性、可复制性较强。
  • 公司服务的客户主要集中在政府应急、公共安全等领域,这些领域所需的快速、可靠、多变十分契合BPM型低代码平台。
1. 百分点低代码平台技术架构
百分点低代码平台的技术架构如下:

整个低代码平台主要有三大能力。
(1)可视化表单、流程构建能力
Clever Builder采用了自研的表单可视化和流程图绘制可视化引擎。在表单方面,组件可分为:
  • 常用组件:文本、数字、日期、单多选、图片、文件等相关组件。
  • 高级组件:关联表单数据、组织架构、成员等高级组件。
平台会在接下来的版本中,根据客户的需求,增加更多类型的组件支持。流程引擎方面,Clever Builder共含有三类业务节点,一类分支节点。三类节点分别为:审批节点、抄送节点、填写节点。一类分支节点,是指互斥分支节点,在分支节点的条件分支中,平台支持设置复杂的过滤条件,从而实现灵活的业务条件配置。通过对可视化表单和流程构建引擎的使用,用户可以通过平台构建出贴合实际业务的流程表单,实现所“建”即所得。
(2)流程流转和版本管理能力
作为一个BPM低代码平台,流程的正确流转是非常关键的基础能力,百分点低代码平台通过自定义的数据格式转换引擎,将用户可视化定义的流程,转化为完全符合BPMN2.0标准的可执行格式进行流程的执行,保证了流程的准确流转。同时,流程引擎也会将流程的每一步执行记录下来,为用户提供清晰的流程执行记录。
(3)对接第三方系统能力
低代码平台服务的客户大部分都拥有自己的OA系统和相关数据库,因此,若想要真正发挥平台的价值,必定需要灵活对接第三方系统的能力。百分点低代码平台提供了三部分对接第三方系统的能力,它们分别是组织架构对接、数据对接和通知消息对接。
组织架构对接
Clever Builder支持对接第三方系统的组织架构和用户,可同时支持自身组织架构用户体系和第三方系统用户体系,基于其高兼容性的组织架构和用户数据结构设计,在有需要的情况下,还可快速定制化开发针对某一第三方系统的组织架构对接。
数据对接能力
由于用户设计表单的数据结构的不确定性,BPM型低代码平台大部分会将表单数据存放于类似于MongoDB的NoSQL数据库,以方便数据的存储和系统查询等操作。
Clever Builder出于以上两点考虑,用户提交的表单数据也保存在MongoDB中。但是这会带来一些问题:
首先,表单数据是非结构化的,这将为后续数据的可视化统计带来不便。
其次,有大量企业用户本身是拥有自身的业务数据表的,他们更希望将收集到的数据保存到其指定的业务表中,若低代码平台只支持自身数据表的数据写入,将会导致数据孤岛。
这里着重介绍一下平台的数据对接能力和步骤。
第一步:组织管理员可在系统管理中配置需要的数据源,其他用户可在表单中可视化设置表单字段与指定数据库表字段的映射关系,主外键字段关系。
第二步:设置完成后,当用户提交表单或表单通过流程后,表单数据会根据配置的映射关系,自动同步到用户设置的自身业务表中,若需要修改已提交的表单数据,也只需在平台的数据管理模块修改,数据表会自动同步到相应的业务表中。
通过第三方数据同步功能,百分点低代码平台能更好地融入客户已有的信息化体系。
通知消息对接
BPM型低代码平台涉及流程的提交、审核、填写、回退、抄送和催办等一系列动作,每一个动作都需要提醒相关责任人,因此,百分点低代码平台还设置了自身的消息提醒模块。
但在实际使用过程中,可能需要将通知提醒通过原有的统一通知系统送达用户手中,做到通知消息的集中管理,方便用户的信息获取。因此,Clever Builder消息通知模块采用了可插拔设计,可通过配置、快速修改系统的通知送达方式,后续将对接钉钉和微信的相关消息通知能力,若客户有需要,也可在短时间内实现对接客户的通知中心。
2. 流程引擎介绍
Clever Builder进行流程结构的转换,以及流程的流转,都离不开平台中最核心的引擎之一——流程引擎。
流程引擎承担了将用户可视化设置的流程转化为可执行的数据结构,并进行流转的职责。现今市面上已存在多种开源的流程引擎,为了保证流程引擎的规范性和可移植性,业界对流程引擎的结构定义了一些通用的规则:BPMN2.0。
那么,什么是BPMN2.0,它又定义了哪些内容呢?
业务流程模型注解(Business Process Modeling Notation -BPMN)是业务流程模型的一种标准图形注解。这个标准是由对象管理组(Object ManagementGroup-OMG)维护的。
BPMN规范的2.0版本,当前已处于最终阶段了,计划不久就会完成,允许在BPMN的图形和元素中添加精确的技术细节,同时制定BPMN元素的执行语法。通过使用XML语言来指定业务流程的可执行语法,BPMN规范已演变为业务流程的语言,可以执行在任何兼容BPMN2的流程引擎中,同时依然可以使用强大的图形注解。
它的优点在于:
  • 标准全面,可以涵盖流程中所有的内容。
  • 通用,只要是符合BPMN2.0语法的流程引擎,就可以执行生成的标准XML业务流程。
下面我们对BPMN2.0标准的XML标签进行简单的说明。

以上图的简单流程为例,来看一下对应的BPMN标准的XML格式。
开始标签
startEvent标签:开始节点标签,用于标识一个流程的开始。
< startEvent
id="startevent" name="开始节点"> < /startEvent>
1. 用户任务标签
userTask标签:用户任务标签,是流程中需要人员参与的节点,不会自动通过,用于审批、填写等操作,其中assignee属性标识了节点责任人信息。
< userTask
id="usertask3" name="人事部" flow:assignee="毕竞"> < /userTask> < userTaskid="usertask1" name="部门领导",flow:assignee="罗方晋"> < /userTask> < userTaskid="usertask2" name="中心负责人" flow:assignee="王一一"> < /userTask>
2. 排他网关
exclusiveGateway标签:排他网关,排他网关就是流程中的分支节点,用于构建分支,流程只会选择其中一条分支进行。
< exclusiveGateway
id="exclusivegateway1" name="Exclusive Gateway"> < /exclusiveGateway>
3. 结束标签
endEvent标签:结束标签,用于标识流程的结束。
< endEvent
id="endevent" name="End"> < /endEvent>
4. 连接线标签
sequenceFlow标签:连接线标签,其中sourceRef属性标识了连接线连接的上一节点,targetRef属性标识了连接线连接的下一节点。连接线子标签conditionExpression用于标识该条连接线上的过滤条件。这些标签可以准确的描述一个流程:
< sequenceFlow
id="flow4" sourceRef="exclusivegateway1"targetRef="usertask2"> < conditionExpressionxsi:type="tFormalExpression"> < ![CDATA[${((belongOperatorUtil.ToArray("[\\"\\"]",com_1b9386ed47629c65f)))}]]> < /conditionExpression> < /sequenceFlow>
Clever Builder的流程引擎,完全符合BPMN2.0标准,因此具有很好的扩展性和兼容性。
下面详细介绍Clever Builder流程的构建和流转过程。
(1)流程发布
在介绍发布的流程之前,我们需要先介绍几个概念:
模板
模板是指用户通过可视化定义形成的业务流程描述,它定义了流程的起始、结束、节点、连接线和其他内容。
流程定义
模板在用户进行发布操作后,会生成相应的流程定义,流程定义完全继承了模板对于业务流程的描述,每一次的发布操作都会为指定模板生成一个流程定义。若模板若作出了修改,新发布的流程定义也会随之变化。
流程实例
用户实际发起一个流程时,会生成对应流程定义的流程实例,它除了包含对应流程定义的内容外,还含有用户提交的数据、流程节点责任人和流程流转信息等内容。
弄明白了上面的内容,我们可以更好地理解流程的发布过程。

在流程发布的过程中,流程的描述数据格式进行了一次转换。

首先,用户通过可视化方式构建的流程在数据库中以FlowNode、FlowEdge分为点和线的格式保存,该结构的优点在于前端构建展示流程图较为方便。
当用户点击发布按钮时,流程将通过调用格式转换工具,将流程中的节点、线、条件等信息封装为一个对象,并进行相应的可执行测试。若测试通过,则会用对象生成一个完全符合BPMN2.0标准的XML格式文件。
(2)流程流转
流程引擎的流转简化流程如下:

我们可以将其简化为三大部分:
流程对象解析器
上图中蓝色的部分为流程对象解析器,它在接收到流程实例的启动命令时,负责将XML格式的流程模板转化为可执行的Process内存对象,方便后续执行操作。
流转推进器
图中绿色的部分为流程推进器。流程推进器维护了一个操作栈,操作栈中压入了所有待执行操作,这些操作可能是需要执行一段脚本,可能是需要解析一个表达式,它会将栈顶的操作取出,判断具体如何执行,并在该操作执行完成后,判断是否有待执行的下一步操作,若有下一步操作,将会有一条操作被压入栈中。
命令执行器
图中橙色部分为命令执行器。命令执行器主要负责执行流程推进器中取出的操作,它包含了多个拦截器,包括引擎的执行拦截器和用户自定义的拦截器等,它们将会在操作执行时进行操作的处理和执行。
通过三大部分的配合,流程即可完成流转。
3. 百分点低代码平台的优势
市面上的低代码平台越来越多,那么百分点低代码平台相较于其他产品有什么优势,又有什么特点呢?
相较于某些头部BPM型低代码平台,百分点低代码平台具有更好的开放能力。
除了能够集成第三方系统的用户、组织架构,以及消息通知等能力,还支持和客户数据库进行对接,将表单数据对接到客户的业务数据库,从而能更好地融入客户的信息化系统中去,让客户能更好地“用起来”。
目前,百分点低代码平台已在为某国家级信息服务平台提供服务,为该平台快速搭建了数十个分类信息录入应用,有效地支撑了该平台的日常运转。
结语
随着国内产业数字化转型和国家新基建的推进,会有越来越多的企业业务进行数字化升级,按需打造应用软件成为主流趋势。
而低代码平台剥离了专业业务知识,转而通过平台提供一种让企业自己积累和分享专业知识及业务经验的标准和能力,对软件厂商来说降低了实施的成本,对企业来说提升自己的掌控力和业务响应能力,这是一个巨大的进步。大量国内外软件厂商和创业公司进入这一领域并开始服务越来越多的客户也充分证明了这种趋势。
在后续的产品迭代中,百分点低代码平台将结合自身特点,深入与钉钉和企业微信的集成,借助更大的平台,探索市场。同时,将持续加强自身的平台能力和业务系统对接能力,更好地为客户创造价值。
【百分点大数据技术团队(低代码平台实践)】百分点科技产品团队抓住行业发展的机遇,结合自身产品优势,不断完善低代码平台能力,积极践行公司”用数据智能推动社会进步“的使命。

    推荐阅读