百分點(diǎn)大數(shù)據(jù)技術(shù)團(tuán)隊(duì):低代碼平臺(tái)實(shí)踐(百分點(diǎn)大數(shù)據(jù)公司)
編者按 :近兩年來,低代碼逐步出現(xiàn)在人們的視野中,特別是伴隨著我國政府、企業(yè)的數(shù)字化轉(zhuǎn)型,一些專注于數(shù)字化轉(zhuǎn)型的廠商在集聚了相當(dāng)?shù)膭菽苤?,大力推?dòng)了低代碼的發(fā)展和行業(yè)普及。據(jù)市場調(diào)查顯示,2020年,國內(nèi)低代碼平臺(tái)市場規(guī)模已達(dá)到18.5億左右,正處于高速增長期。 在疫情期間,對無紙化辦公、信息采集的需求更加迫切,也催生了大量低代碼應(yīng)用的場景,如居民健康信息采集、出行上報(bào)等。隨著國內(nèi)廠商的大力投入、低代碼技術(shù)的日趨成熟,以及行業(yè)經(jīng)驗(yàn)的積累,越來越多的應(yīng)用場景將會(huì)被挖掘,未來的低代碼市場將會(huì)維持較高的增長。 本文中,百分點(diǎn)大數(shù)據(jù)技術(shù)團(tuán)隊(duì)介紹了低代碼相關(guān)的內(nèi)容,包括低代碼的概念、核心能力技術(shù)路線及應(yīng)用場景等,以及百分點(diǎn)低代碼平臺(tái)的建設(shè)實(shí)踐與特點(diǎn)。
一、低代碼平臺(tái)概述
低代碼開發(fā)平臺(tái)(low-code development platform,簡稱LCDP),是指通過提供可視化編程組件以及軟件全生命周期管理能力,大大降低開發(fā)者開發(fā)代碼量、開發(fā)難度和維護(hù)成本的開發(fā)者生產(chǎn)力工具。
需要注意的是,這里開發(fā)者的定義不同于傳統(tǒng)的軟件開發(fā)者,低代碼由于其出色的可視化能力,大大地降低了開發(fā)一款應(yīng)用的門檻,一個(gè)沒有任何編程基礎(chǔ)的公司職員也可以作為低代碼平臺(tái)的開發(fā)者。
從低代碼的概念中,我們可以總結(jié)出低代碼平臺(tái)需要具備的三大核心能力:
1. 全??梢暬幊?/span>
全??梢暬幊痰闹攸c(diǎn)有兩方面,第一是可視化,可視化不僅包括編程過程中,通過托拉拽組件和配置完成應(yīng)用編寫的操作,也包括了平臺(tái)提供的所見即所得的能力;第二是全棧,傳統(tǒng)的IDE也有部分是支持可視化開發(fā)能力的,但是低代碼平臺(tái)更強(qiáng)調(diào)的是全棧,是整個(gè)軟件開發(fā)中的界面、數(shù)據(jù)、邏輯,以及系統(tǒng)運(yùn)維全部可視化。
2. 全生命周期管理
作為一個(gè)一站式應(yīng)用管理平臺(tái),低代碼支持應(yīng)用的完整生命周期管理,從應(yīng)用的設(shè)計(jì)階段開始,經(jīng)歷開發(fā)、構(gòu)建、測試、部署,以及上線后的運(yùn)維。
3. 低代碼擴(kuò)展能力
低代碼開發(fā)平臺(tái)在部分場景下仍然離不開代碼,因此平臺(tái)必須支持在必要的情況下通過少量代碼來應(yīng)對應(yīng)用需求的靈活擴(kuò)展,例如添加自定義的組件、允許用戶定制CSS樣式、專用加密規(guī)則和非標(biāo)準(zhǔn)需求等。
二、技術(shù)路線及應(yīng)用場景
根據(jù)低代碼的技術(shù)設(shè)計(jì)和適用場景,可以將低代碼路線分為零代碼平臺(tái)和低代碼平臺(tái):
隨著企業(yè)發(fā)展,為減少業(yè)務(wù)部門之間頻繁的對接需求,提高業(yè)務(wù)效率,低代碼平臺(tái)作為一款軟件開發(fā)工具,可覆蓋大多數(shù)領(lǐng)域和眾多行業(yè)的不同應(yīng)用場景,根據(jù)場景類型可分為通用性業(yè)務(wù)場景、企業(yè)個(gè)性化定制場景和企業(yè)細(xì)分業(yè)務(wù)應(yīng)用場景。
這里以“請假申請”為例,介紹如何用低代碼進(jìn)行開發(fā),請假申請四步走如下所示:
Step1:構(gòu)建表單
Step2:構(gòu)建流程
Step3:提交申請
Step4:申請審批
?
三、百分點(diǎn)低代碼平臺(tái)實(shí)踐
百分點(diǎn)低代碼平臺(tái),產(chǎn)品名:Clever Builder,選取的是BPM流程表單型路線。我們選擇BPM型低代碼平臺(tái),主要出于以下幾點(diǎn)考慮:
- BPM的產(chǎn)品成熟度較高,在OA,CRM等領(lǐng)域有非常豐富的應(yīng)用場景,且場景通用性、可復(fù)制性較強(qiáng)。
- 公司服務(wù)的客戶主要集中在政府應(yīng)急、公共安全等領(lǐng)域,這些領(lǐng)域所需的快速、可靠、多變十分契合BPM型低代碼平臺(tái)。
1. 百分點(diǎn)低代碼平臺(tái)技術(shù)架構(gòu)
百分點(diǎn)低代碼平臺(tái)的技術(shù)架構(gòu)如下:
整個(gè)低代碼平臺(tái)主要有三大能力。
(1)可視化表單、流程構(gòu)建能力
Clever Builder采用了自研的表單可視化和流程圖繪制可視化引擎。在表單方面,組件可分為:
- 常用組件:文本、數(shù)字、日期、單多選、圖片、文件等相關(guān)組件。
- 高級(jí)組件:關(guān)聯(lián)表單數(shù)據(jù)、組織架構(gòu)、成員等高級(jí)組件。
平臺(tái)會(huì)在接下來的版本中,根據(jù)客戶的需求,增加更多類型的組件支持。流程引擎方面,Clever Builder共含有三類業(yè)務(wù)節(jié)點(diǎn),一類分支節(jié)點(diǎn)。三類節(jié)點(diǎn)分別為:審批節(jié)點(diǎn)、抄送節(jié)點(diǎn)、填寫節(jié)點(diǎn)。一類分支節(jié)點(diǎn),是指互斥分支節(jié)點(diǎn),在分支節(jié)點(diǎn)的條件分支中,平臺(tái)支持設(shè)置復(fù)雜的過濾條件,從而實(shí)現(xiàn)靈活的業(yè)務(wù)條件配置。通過對可視化表單和流程構(gòu)建引擎的使用,用戶可以通過平臺(tái)構(gòu)建出貼合實(shí)際業(yè)務(wù)的流程表單,實(shí)現(xiàn)所“建”即所得。
(2)流程流轉(zhuǎn)和版本管理能力
作為一個(gè)BPM低代碼平臺(tái),流程的正確流轉(zhuǎn)是非常關(guān)鍵的基礎(chǔ)能力,百分點(diǎn)低代碼平臺(tái)通過自定義的數(shù)據(jù)格式轉(zhuǎn)換引擎,將用戶可視化定義的流程,轉(zhuǎn)化為完全符合BPMN2.0標(biāo)準(zhǔn)的可執(zhí)行格式進(jìn)行流程的執(zhí)行,保證了流程的準(zhǔn)確流轉(zhuǎn)。同時(shí),流程引擎也會(huì)將流程的每一步執(zhí)行記錄下來,為用戶提供清晰的流程執(zhí)行記錄。
(3)對接第三方系統(tǒng)能力
低代碼平臺(tái)服務(wù)的客戶大部分都擁有自己的OA系統(tǒng)和相關(guān)數(shù)據(jù)庫,因此,若想要真正發(fā)揮平臺(tái)的價(jià)值,必定需要靈活對接第三方系統(tǒng)的能力。百分點(diǎn)低代碼平臺(tái)提供了三部分對接第三方系統(tǒng)的能力,它們分別是組織架構(gòu)對接、數(shù)據(jù)對接和通知消息對接。
組織架構(gòu)對接
Clever Builder支持對接第三方系統(tǒng)的組織架構(gòu)和用戶,可同時(shí)支持自身組織架構(gòu)用戶體系和第三方系統(tǒng)用戶體系,基于其高兼容性的組織架構(gòu)和用戶數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),在有需要的情況下,還可快速定制化開發(fā)針對某一第三方系統(tǒng)的組織架構(gòu)對接。
數(shù)據(jù)對接能力
由于用戶設(shè)計(jì)表單的數(shù)據(jù)結(jié)構(gòu)的不確定性,BPM型低代碼平臺(tái)大部分會(huì)將表單數(shù)據(jù)存放于類似于MongoDB的NoSQL數(shù)據(jù)庫,以方便數(shù)據(jù)的存儲(chǔ)和系統(tǒng)查詢等操作。
Clever Builder出于以上兩點(diǎn)考慮,用戶提交的表單數(shù)據(jù)也保存在MongoDB中。但是這會(huì)帶來一些問題:
首先,表單數(shù)據(jù)是非結(jié)構(gòu)化的,這將為后續(xù)數(shù)據(jù)的可視化統(tǒng)計(jì)帶來不便。
其次,有大量企業(yè)用戶本身是擁有自身的業(yè)務(wù)數(shù)據(jù)表的,他們更希望將收集到的數(shù)據(jù)保存到其指定的業(yè)務(wù)表中,若低代碼平臺(tái)只支持自身數(shù)據(jù)表的數(shù)據(jù)寫入,將會(huì)導(dǎo)致數(shù)據(jù)孤島。
這里著重介紹一下平臺(tái)的數(shù)據(jù)對接能力和步驟。
第一步:組織管理員可在系統(tǒng)管理中配置需要的數(shù)據(jù)源,其他用戶可在表單中可視化設(shè)置表單字段與指定數(shù)據(jù)庫表字段的映射關(guān)系,主外鍵字段關(guān)系。
第二步:設(shè)置完成后,當(dāng)用戶提交表單或表單通過流程后,表單數(shù)據(jù)會(huì)根據(jù)配置的映射關(guān)系,自動(dòng)同步到用戶設(shè)置的自身業(yè)務(wù)表中,若需要修改已提交的表單數(shù)據(jù),也只需在平臺(tái)的數(shù)據(jù)管理模塊修改,數(shù)據(jù)表會(huì)自動(dòng)同步到相應(yīng)的業(yè)務(wù)表中。
通過第三方數(shù)據(jù)同步功能,百分點(diǎn)低代碼平臺(tái)能更好地融入客戶已有的信息化體系。
通知消息對接
BPM型低代碼平臺(tái)涉及流程的提交、審核、填寫、回退、抄送和催辦等一系列動(dòng)作,每一個(gè)動(dòng)作都需要提醒相關(guān)責(zé)任人,因此,百分點(diǎn)低代碼平臺(tái)還設(shè)置了自身的消息提醒模塊。
但在實(shí)際使用過程中,可能需要將通知提醒通過原有的統(tǒng)一通知系統(tǒng)送達(dá)用戶手中,做到通知消息的集中管理,方便用戶的信息獲取。因此,Clever Builder消息通知模塊采用了可插拔設(shè)計(jì),可通過配置、快速修改系統(tǒng)的通知送達(dá)方式,后續(xù)將對接釘釘和微信的相關(guān)消息通知能力,若客戶有需要,也可在短時(shí)間內(nèi)實(shí)現(xiàn)對接客戶的通知中心。
2. 流程引擎介紹
Clever Builder進(jìn)行流程結(jié)構(gòu)的轉(zhuǎn)換,以及流程的流轉(zhuǎn),都離不開平臺(tái)中最核心的引擎之一——流程引擎。
流程引擎承擔(dān)了將用戶可視化設(shè)置的流程轉(zhuǎn)化為可執(zhí)行的數(shù)據(jù)結(jié)構(gòu),并進(jìn)行流轉(zhuǎn)的職責(zé)?,F(xiàn)今市面上已存在多種開源的流程引擎,為了保證流程引擎的規(guī)范性和可移植性,業(yè)界對流程引擎的結(jié)構(gòu)定義了一些通用的規(guī)則:BPMN2.0。
那么,什么是BPMN2.0,它又定義了哪些內(nèi)容呢?
業(yè)務(wù)流程模型注解(Business Process Modeling Notation -BPMN)是業(yè)務(wù)流程模型的一種標(biāo)準(zhǔn)圖形注解。這個(gè)標(biāo)準(zhǔn)是由對象管理組(Object ManagementGroup-OMG)維護(hù)的。
BPMN規(guī)范的2.0版本,當(dāng)前已處于最終階段了,計(jì)劃不久就會(huì)完成,允許在BPMN的圖形和元素中添加精確的技術(shù)細(xì)節(jié),同時(shí)制定BPMN元素的執(zhí)行語法。通過使用XML語言來指定業(yè)務(wù)流程的可執(zhí)行語法,BPMN規(guī)范已演變?yōu)闃I(yè)務(wù)流程的語言,可以執(zhí)行在任何兼容BPMN2的流程引擎中,同時(shí)依然可以使用強(qiáng)大的圖形注解。
它的優(yōu)點(diǎn)在于:
- 標(biāo)準(zhǔn)全面,可以涵蓋流程中所有的內(nèi)容。
- 通用,只要是符合BPMN2.0語法的流程引擎,就可以執(zhí)行生成的標(biāo)準(zhǔn)XML業(yè)務(wù)流程。
下面我們對BPMN2.0標(biāo)準(zhǔn)的XML標(biāo)簽進(jìn)行簡單的說明。
以上圖的簡單流程為例,來看一下對應(yīng)的BPMN標(biāo)準(zhǔn)的XML格式。
開始標(biāo)簽
startEvent標(biāo)簽:開始節(jié)點(diǎn)標(biāo)簽,用于標(biāo)識(shí)一個(gè)流程的開始。
<startEvent |
1. 用戶任務(wù)標(biāo)簽
userTask標(biāo)簽:用戶任務(wù)標(biāo)簽,是流程中需要人員參與的節(jié)點(diǎn),不會(huì)自動(dòng)通過,用于審批、填寫等操作,其中assignee屬性標(biāo)識(shí)了節(jié)點(diǎn)責(zé)任人信息。
<userTask |
2. 排他網(wǎng)關(guān)
exclusiveGateway標(biāo)簽:排他網(wǎng)關(guān),排他網(wǎng)關(guān)就是流程中的分支節(jié)點(diǎn),用于構(gòu)建分支,流程只會(huì)選擇其中一條分支進(jìn)行。
<exclusiveGateway |
3. 結(jié)束標(biāo)簽
endEvent標(biāo)簽:結(jié)束標(biāo)簽,用于標(biāo)識(shí)流程的結(jié)束。
<endEvent |
4. 連接線標(biāo)簽
sequenceFlow標(biāo)簽:連接線標(biāo)簽,其中sourceRef屬性標(biāo)識(shí)了連接線連接的上一節(jié)點(diǎn),targetRef屬性標(biāo)識(shí)了連接線連接的下一節(jié)點(diǎn)。連接線子標(biāo)簽conditionExpression用于標(biāo)識(shí)該條連接線上的過濾條件。 這些標(biāo)簽可以準(zhǔn)確的描述一個(gè)流程
<sequenceFlow |
Clever Builder的流程引擎,完全符合BPMN2.0標(biāo)準(zhǔn),因此具有很好的擴(kuò)展性和兼容性。
下面詳細(xì)介紹Clever Builder流程的構(gòu)建和流轉(zhuǎn)過程。
(1)流程發(fā)布
在介紹發(fā)布的流程之前,我們需要先介紹幾個(gè)概念:
模板
模板是指用戶通過可視化定義形成的業(yè)務(wù)流程描述,它定義了流程的起始、結(jié)束、節(jié)點(diǎn)、連接線和其他內(nèi)容。
流程定義
模板在用戶進(jìn)行發(fā)布操作后,會(huì)生成相應(yīng)的流程定義,流程定義完全繼承了模板對于業(yè)務(wù)流程的描述,每一次的發(fā)布操作都會(huì)為指定模板生成一個(gè)流程定義。若模板若作出了修改,新發(fā)布的流程定義也會(huì)隨之變化。
流程實(shí)例
用戶實(shí)際發(fā)起一個(gè)流程時(shí),會(huì)生成對應(yīng)流程定義的流程實(shí)例,它除了包含對應(yīng)流程定義的內(nèi)容外,還含有用戶提交的數(shù)據(jù)、流程節(jié)點(diǎn)責(zé)任人和流程流轉(zhuǎn)信息等內(nèi)容。
弄明白了上面的內(nèi)容,我們可以更好地理解流程的發(fā)布過程。
在流程發(fā)布的過程中,流程的描述數(shù)據(jù)格式進(jìn)行了一次轉(zhuǎn)換。
首先,用戶通過可視化方式構(gòu)建的流程在數(shù)據(jù)庫中以FlowNode、FlowEdge分為點(diǎn)和線的格式保存,該結(jié)構(gòu)的優(yōu)點(diǎn)在于前端構(gòu)建展示流程圖較為方便。
當(dāng)用戶點(diǎn)擊發(fā)布按鈕時(shí),流程將通過調(diào)用格式轉(zhuǎn)換工具,將流程中的節(jié)點(diǎn)、線、條件等信息封裝為一個(gè)對象,并進(jìn)行相應(yīng)的可執(zhí)行測試。若測試通過,則會(huì)用對象生成一個(gè)完全符合BPMN2.0標(biāo)準(zhǔn)的XML格式文件。
(2)流程流轉(zhuǎn)
流程引擎的流轉(zhuǎn)簡化流程如下:
我們可以將其簡化為三大部分:
流程對象解析器
上圖中藍(lán)色的部分為流程對象解析器,它在接收到流程實(shí)例的啟動(dòng)命令時(shí),負(fù)責(zé)將XML格式的流程模板轉(zhuǎn)化為可執(zhí)行的Process內(nèi)存對象,方便后續(xù)執(zhí)行操作。
流轉(zhuǎn)推進(jìn)器
圖中綠色的部分為流程推進(jìn)器。流程推進(jìn)器維護(hù)了一個(gè)操作棧,操作棧中壓入了所有待執(zhí)行操作,這些操作可能是需要執(zhí)行一段腳本,可能是需要解析一個(gè)表達(dá)式,它會(huì)將棧頂?shù)牟僮魅〕?,判斷具體如何執(zhí)行,并在該操作執(zhí)行完成后,判斷是否有待執(zhí)行的下一步操作,若有下一步操作,將會(huì)有一條操作被壓入棧中。
命令執(zhí)行器
圖中橙色部分為命令執(zhí)行器。命令執(zhí)行器主要負(fù)責(zé)執(zhí)行流程推進(jìn)器中取出的操作,它包含了多個(gè)攔截器,包括引擎的執(zhí)行攔截器和用戶自定義的攔截器等,它們將會(huì)在操作執(zhí)行時(shí)進(jìn)行操作的處理和執(zhí)行。
通過三大部分的配合,流程即可完成流轉(zhuǎn)。
3. 百分點(diǎn)低代碼平臺(tái)的優(yōu)勢
市面上的低代碼平臺(tái)越來越多,那么百分點(diǎn)低代碼平臺(tái)相較于其他產(chǎn)品有什么優(yōu)勢,又有什么特點(diǎn)呢?
相較于某些頭部BPM型低代碼平臺(tái),百分點(diǎn)低代碼平臺(tái)具有更好的開放能力。
除了能夠集成第三方系統(tǒng)的用戶、組織架構(gòu),以及消息通知等能力,還支持和客戶數(shù)據(jù)庫進(jìn)行對接,將表單數(shù)據(jù)對接到客戶的業(yè)務(wù)數(shù)據(jù)庫,從而能更好地融入客戶的信息化系統(tǒng)中去,讓客戶能更好地“用起來”。
目前,百分點(diǎn)低代碼平臺(tái)已在為某國家級(jí)信息服務(wù)平臺(tái)提供服務(wù),為該平臺(tái)快速搭建了數(shù)十個(gè)分類信息錄入應(yīng)用,有效地支撐了該平臺(tái)的日常運(yùn)轉(zhuǎn)。
結(jié)語
隨著國內(nèi)產(chǎn)業(yè)數(shù)字化轉(zhuǎn)型和國家新基建的推進(jìn),會(huì)有越來越多的企業(yè)業(yè)務(wù)進(jìn)行數(shù)字化升級(jí),按需打造應(yīng)用軟件成為主流趨勢。
而低代碼平臺(tái)剝離了專業(yè)業(yè)務(wù)知識(shí),轉(zhuǎn)而通過平臺(tái)提供一種讓企業(yè)自己積累和分享專業(yè)知識(shí)及業(yè)務(wù)經(jīng)驗(yàn)的標(biāo)準(zhǔn)和能力,對軟件廠商來說降低了實(shí)施的成本,對企業(yè)來說提升自己的掌控力和業(yè)務(wù)響應(yīng)能力,這是一個(gè)巨大的進(jìn)步。大量國內(nèi)外軟件廠商和創(chuàng)業(yè)公司進(jìn)入這一領(lǐng)域并開始服務(wù)越來越多的客戶也充分證明了這種趨勢。
在后續(xù)的產(chǎn)品迭代中,百分點(diǎn)低代碼平臺(tái)將結(jié)合自身特點(diǎn),深入與釘釘和企業(yè)微信的集成,借助更大的平臺(tái),探索市場。同時(shí),將持續(xù)加強(qiáng)自身的平臺(tái)能力和業(yè)務(wù)系統(tǒng)對接能力,更好地為客戶創(chuàng)造價(jià)值。
百分點(diǎn)科技產(chǎn)品團(tuán)隊(duì)抓住行業(yè)發(fā)展的機(jī)遇,結(jié)合自身產(chǎn)品優(yōu)勢,不斷完善低代碼平臺(tái)能力,積極踐行公司”用數(shù)據(jù)智能推動(dòng)社會(huì)進(jìn)步“的使命。