王天媛,張楷
(天津航天瑞萊科技有限公司,天津 300462)
隨著計(jì)算機(jī)行業(yè)的不斷發(fā)展,各行業(yè)信息化建設(shè)的不斷完善,系統(tǒng)開發(fā)的需求量越來越大,而傳統(tǒng)的系統(tǒng)開發(fā)方式存在著開發(fā)周期長,維護(hù)困難等問題,因此,低代碼平臺越來越受歡迎。低代碼,顧名思義,使用足夠少的代碼完成系統(tǒng)的開發(fā),本質(zhì)上就是將大部分通用功能進(jìn)行封裝,而個(gè)性功能通過界面的拖拽和業(yè)務(wù)邏輯代碼的綁定來完成,大大降低了開發(fā)難度和開發(fā)周期。傳統(tǒng)的銷售合同管理系統(tǒng)是具有普遍性和通用性的,但試驗(yàn)檢測行業(yè)的合同管理系統(tǒng)具有自身的獨(dú)特性,合同的屬性、錢款的流動,流程的審批等都不同于普通的銷售合同管理系統(tǒng),而且合同數(shù)據(jù)等需要跟試驗(yàn)檢測的業(yè)務(wù)系統(tǒng)進(jìn)行對接,因此采購的合同系統(tǒng)無法滿足自身需求,需要定制開發(fā)。如果采購系統(tǒng)后進(jìn)行二次開發(fā),局限性大,靈活性小,成本高,數(shù)據(jù)無法自己掌控,因此,使用封裝好的低代碼平臺,省去開發(fā)框架搭建,編寫自己業(yè)務(wù)邏輯成為最好的選擇。
傳統(tǒng)開發(fā)方式開發(fā)系統(tǒng)需要搭建代碼環(huán)境,確認(rèn)架構(gòu),構(gòu)建數(shù)據(jù)庫實(shí)體,對于合同管理系統(tǒng)來說還需要進(jìn)行流程引擎的開發(fā),然后才能進(jìn)行業(yè)務(wù)的開發(fā),上述整個(gè)流程,有專業(yè)的技術(shù)團(tuán)隊(duì)支持也需要半年左右的時(shí)間。而低代碼平臺基于可視化編程語言,依靠少量的代碼就能完成上述工作,在很大程度上剝離了專業(yè)業(yè)務(wù)知識,進(jìn)而實(shí)現(xiàn)提質(zhì)增效、降低成本的目的[1]。例如頁面表單直接通過數(shù)據(jù)庫字段生成,流程走向在界面拖拽設(shè)計(jì),除在業(yè)務(wù)邏輯處理上需要少量的代碼支持外,難點(diǎn)僅在于低代碼平臺接口的熟悉與使用,無須搭建代碼架構(gòu),直接調(diào)用接口開發(fā),開發(fā)周期縮短到兩個(gè)月左右,人數(shù)可一到兩人,省時(shí)省力。
低代碼平臺的特點(diǎn)在于低代碼,高擴(kuò)展,簡單來說就是公用的部分進(jìn)行了封裝,個(gè)性的部分支持?jǐn)U展。以組織架構(gòu)為例,一般系統(tǒng)都需要有組織架構(gòu),這樣才能確認(rèn)使用者,所以平臺直接集成了組織架構(gòu)功能,但不同業(yè)務(wù)對組織架構(gòu)的需求不同,例如有些系統(tǒng)的架構(gòu)需要進(jìn)行同步而非直接設(shè)置,有些業(yè)務(wù)需要對架構(gòu)人員賦予角色、權(quán)限,有些業(yè)務(wù)需要組織機(jī)構(gòu)的代碼來拼接編號,因此,平臺在提供組織架構(gòu)的基礎(chǔ)上提供了個(gè)性化設(shè)置,允許對接其他接口同步,也允許各類角色的設(shè)置,并支持額外屬性的設(shè)置,能夠滿足大多數(shù)業(yè)務(wù)需求。
使用傳統(tǒng)的開發(fā)模式,大多數(shù)人都會面臨一個(gè)問題,即開發(fā)人員不懂業(yè)務(wù)而業(yè)務(wù)人員不懂開發(fā),這就使得整個(gè)開發(fā)過程業(yè)務(wù)人員無法介入而開發(fā)人員僅通過文檔進(jìn)行編寫代碼,最終會導(dǎo)致開發(fā)出來的程序與實(shí)際業(yè)務(wù)需求存在偏差。
低代碼開發(fā)平臺通常將在線表單、流程引擎、數(shù)據(jù)報(bào)表、用戶界面等進(jìn)行模塊分裝,讓不具備IT背景的用戶通過“搭積木”的方式完成業(yè)務(wù)應(yīng)用的開發(fā)[2],所以低代碼平臺除了實(shí)際的業(yè)務(wù)處理需要代碼實(shí)現(xiàn)外,其他的大部分內(nèi)容是通過界面拖拽等方式來完成的,也就意味著,使用者不需要完全懂代碼邏輯,只需要確認(rèn)自己想要實(shí)現(xiàn)的問題即可,換言之,界面設(shè)計(jì)和流程設(shè)計(jì)可以不需要程序員,業(yè)務(wù)人員可以通過簡單的培訓(xùn)來完成。以流程設(shè)計(jì)為例,開發(fā)人員無法了解在實(shí)際業(yè)務(wù)中,合同需要誰來審批,不同的金額,不同的部門如何去分配,使用低代碼平臺開發(fā),業(yè)務(wù)人員了解簡單的使用規(guī)則后,在開發(fā)的輔助下可以直接進(jìn)行拖拽設(shè)計(jì),省去了產(chǎn)出邏輯關(guān)系圖和給開發(fā)講解的時(shí)間,簡單的流程僅需幾個(gè)小時(shí)便可完成,規(guī)避了溝通帶來的成本與風(fēng)險(xiǎn),加快了開發(fā)進(jìn)度。
如今各個(gè)企業(yè)的信息化建設(shè)在逐漸完善,即使非互聯(lián)網(wǎng)公司也需要各種系統(tǒng)作為日常工作的支持,而對于這些應(yīng)用的部署和管理就成為企業(yè)的需求點(diǎn),多個(gè)系統(tǒng)使用多個(gè)服務(wù)器部署會導(dǎo)致運(yùn)維困難、成本高等問題。如果單獨(dú)建立一個(gè)合同管理系統(tǒng)必然會和其他的應(yīng)用系統(tǒng)的一些功能和數(shù)據(jù)重復(fù),造成重復(fù)建設(shè),產(chǎn)生新的數(shù)據(jù)孤島,數(shù)據(jù)無法有效利用[3],而微服務(wù)架構(gòu)使得各個(gè)服務(wù)間獨(dú)立部署的同時(shí)又可方便地進(jìn)行接口互通,避免了數(shù)據(jù)孤島的產(chǎn)生,且每個(gè)服務(wù)獨(dú)立啟停,不影響其他服務(wù),可單獨(dú)進(jìn)行系統(tǒng)的升級維護(hù)。低代碼平臺直接集成了微服務(wù),無須額外開發(fā),僅需將不同業(yè)務(wù)開發(fā)成不同的應(yīng)用,每個(gè)應(yīng)用作為一個(gè)服務(wù)獨(dú)立運(yùn)行,互不影響,可按應(yīng)用獨(dú)立啟停,可同步運(yùn)維。
結(jié)合業(yè)務(wù)定制需求和流程的需要,選用流程引擎為主的低代碼開發(fā)平臺最為合適。開發(fā)開始前需要將業(yè)務(wù)需求轉(zhuǎn)化為開發(fā)需求,并完成數(shù)據(jù)庫設(shè)計(jì),理清業(yè)務(wù)邏輯,梳理開發(fā)要點(diǎn),便于后續(xù)程序開發(fā)。
以客戶管理為例,業(yè)務(wù)部門提出的需求點(diǎn)在于:客戶池的建立和維護(hù),客戶信息需要包含基本信息,工商信息,財(cái)務(wù)信息和聯(lián)系人信息,有客戶池,有公共客戶,公共客戶可再次分配;梳理上述業(yè)務(wù)需求后,業(yè)務(wù)需求到開發(fā)需求的轉(zhuǎn)換如下:客戶存儲表分為基本信息表、財(cái)務(wù)信息表、工商信息表和聯(lián)系人信息表,客戶基本信息表為主表,其他幾個(gè)表以客戶編號作為外鍵,同時(shí)還包含公共客戶的狀態(tài)位,能夠分清客戶的歸屬,另外了解到一個(gè)客戶允許多個(gè)客戶經(jīng)理,就額外需要一張記錄客戶經(jīng)理、客戶以及聯(lián)系人關(guān)系的表,以各自的編號存儲,理清客戶與客戶經(jīng)理的一對多、客戶經(jīng)理與聯(lián)系人的一對多以及客戶與聯(lián)系人的一對多關(guān)系,并產(chǎn)出數(shù)據(jù)庫關(guān)系圖1,以及實(shí)體關(guān)系圖2。
圖1 數(shù)據(jù)庫關(guān)系圖
圖2 ER圖
基于上述的準(zhǔn)備,所有的業(yè)務(wù)需求均可轉(zhuǎn)化為對數(shù)據(jù)庫的增刪改查操作,再根據(jù)低代碼流程平臺的特性,將所有業(yè)務(wù)劃分為流程結(jié)束前后、表單提交前后,子表更改前后等節(jié)點(diǎn)發(fā)生,例如:在客戶新增表單提交前校驗(yàn)必填項(xiàng)并生成客戶編號,客戶新增流程結(jié)束后更新客戶庫表及對應(yīng)的財(cái)務(wù)工商等關(guān)聯(lián)表信息。將所有的業(yè)務(wù)劃分規(guī)整之后開發(fā)就會變得很容易。
數(shù)據(jù)庫和業(yè)務(wù)邏輯都已經(jīng)完成了拆解,開始進(jìn)行系統(tǒng)的開發(fā)。平臺中表單模型采用了開放的技術(shù)架構(gòu)和VUE3.0,靈活性高[4],可自行創(chuàng)建也可根據(jù)數(shù)據(jù)庫字段自動生成表單,開發(fā)人員只需要根據(jù)實(shí)際情況進(jìn)行字段的刪減隱藏,修改UI組件類型,設(shè)計(jì)界面風(fēng)格等即可,圖3為表單設(shè)計(jì)圖。
圖3 表單設(shè)計(jì)圖
如果特殊界面需求,可通過編輯頁面源碼,寫html和js來做實(shí)現(xiàn),數(shù)據(jù)的獲取可以通過ajax調(diào)用后臺接口。圖4為源碼編寫界面。
圖4 源碼編寫界面
總的來說,表單的設(shè)計(jì)是很靈活的,一般的需求均可實(shí)現(xiàn),如果不喜歡統(tǒng)一的默認(rèn)樣式,官方是給出了幾種簡單的配色方案的,都不滿足也可以自行編寫css修改樣式,除了不能用IDE編碼這一方面不太方便之外,其他都能滿足開發(fā)與業(yè)務(wù)的需求。
流程的設(shè)計(jì)這里最好是一個(gè)開發(fā)加一個(gè)業(yè)務(wù)人員一起來設(shè)計(jì),業(yè)務(wù)人員清楚流程的走向和審批等相關(guān)要求,而開發(fā)人員負(fù)責(zé)實(shí)際的操作,能夠減少理解差異帶來的風(fēng)險(xiǎn)。
以合同審批為例,對每一步審批人員能夠編輯哪些字段,每個(gè)節(jié)點(diǎn)需要哪些角色進(jìn)行審批,到達(dá)某一個(gè)節(jié)點(diǎn)時(shí)判斷不同的條件決定不同的流程走向等,這些可由業(yè)務(wù)人員直接進(jìn)行設(shè)計(jì),開發(fā)人員輔助,頁面如圖5。
圖5 流程設(shè)計(jì)界面
數(shù)據(jù)庫、表單、流程都已經(jīng)設(shè)計(jì)完畢,接下來就只剩下單純的業(yè)務(wù)邏輯開發(fā)了,只需要單純的業(yè)務(wù)上的增刪改查,并且操作數(shù)據(jù)庫有專門的接口,按照文檔操作,代碼量低,效率高。
以合同審批流程為例,業(yè)務(wù)需求是:合同審批流程結(jié)束后,將合同入庫,更新合同表、交易信息表信息;從代碼角度來講,就是監(jiān)聽流程結(jié)束事件,在結(jié)束的時(shí)候,執(zhí)行數(shù)據(jù)庫更新操作,所以代碼需要繼承監(jiān)聽類,然后實(shí)現(xiàn)流程業(yè)務(wù),綁定在流程事件上[5]。代碼如下:
可以看到,在實(shí)現(xiàn)的execute方法的時(shí)候,是有“ProcessExecutionContext”這個(gè)參數(shù)的,通過這個(gè)參數(shù),直接拿到與流程有關(guān)的所有屬性,包括審批人、審批信息、表單數(shù)據(jù)等,所以只要知道如何獲取這些數(shù)據(jù),使用這些數(shù)據(jù)完成業(yè)務(wù)邏輯即可。
開發(fā)人員寫完代碼后,需要將代碼進(jìn)行部署。該低代碼平臺支持微服務(wù),每個(gè)應(yīng)用單獨(dú)部署啟停,將編寫完的代碼打成jar包,放在對應(yīng)應(yīng)用下的lib文件夾下,系統(tǒng)檢測到j(luò)ar包增加或更換,系統(tǒng)會自動重啟該應(yīng)用,對jar包的名稱和數(shù)量沒有限制。
當(dāng)jar包部署完之后,找到對應(yīng)的流程,在流程設(shè)置里找到事件綁定,因?yàn)榇饲袄^承了特定的類,所以在綁定的時(shí)候選到情景之后就能直接找到對應(yīng)的類。例如上面的代碼,完成的是合同審批結(jié)束后更新表的操作,那就需要在流程設(shè)置的事件綁定中選擇“流程結(jié)束后事件”,然后選中剛剛寫的類名添加,保存。然后就會在實(shí)際審批結(jié)束后進(jìn)入到這個(gè)方法執(zhí)行,非常簡便。
本套合同管理系統(tǒng)從業(yè)務(wù)提出需求到完整上線歷時(shí)四個(gè)月,其中業(yè)務(wù)需求轉(zhuǎn)換為開發(fā)需求及數(shù)據(jù)庫設(shè)計(jì)工作用時(shí)半個(gè)月,系統(tǒng)開發(fā)兩人共兩個(gè)月,測試、修改bug共用時(shí)半個(gè)月,上線試用,功能調(diào)整用時(shí)一個(gè)月,目前系統(tǒng)穩(wěn)定運(yùn)行時(shí)間已一年左右時(shí)間,其間未出現(xiàn)宕機(jī)、數(shù)據(jù)丟失等問題,在運(yùn)行半年多的時(shí)候考慮數(shù)據(jù)量問題進(jìn)行過一次數(shù)據(jù)庫遷移,備份及遷移共用時(shí)半小時(shí)。使用大半年后,綜合公司業(yè)務(wù)部門需求進(jìn)行過一次升級開發(fā),增加了一部分功能,包含對歷史數(shù)據(jù)的兼容、現(xiàn)有數(shù)據(jù)的處理統(tǒng)計(jì)等問題,共一人一個(gè)月的時(shí)間。
從上述數(shù)據(jù)可以看出,本套系統(tǒng)最多開發(fā)的人員為兩人,最初開發(fā)的時(shí)間也就兩個(gè)月,運(yùn)維便捷,一人足矣,升級對原程序業(yè)務(wù)無影響,遷移及升級都在半小時(shí)內(nèi)可完成,整體對比傳統(tǒng)開發(fā)方式在開發(fā)人數(shù)上大大縮減,開發(fā)時(shí)間上縮短不止一半,運(yùn)維、升級、部署等都一鍵完成節(jié)省了人力物力,且系統(tǒng)運(yùn)行穩(wěn)定,未出現(xiàn)過漏洞、攻擊、程序崩潰等問題。
圖6 代碼綁定界面
全程參與開發(fā)運(yùn)維之后,總結(jié)出不足之處有以下幾點(diǎn):首先是前端的限制性較大,如果不使用系統(tǒng)默認(rèn)表單,編輯前端頁面比較麻煩,因?yàn)轫撁娓氖且詇tml源碼為基礎(chǔ)的,對于目前流行的各類前端框架無法使用,所以僅能使用簡便的頁面設(shè)計(jì),而如果全套前端自行搭建框架實(shí)現(xiàn)的話,對流程綁定表單等功能會有影響,無法使用流程;其次,所有業(yè)務(wù)邏輯必須流程化。對于合同管理系統(tǒng)來說,流程是必須的,所有操作都需要經(jīng)過審批,把這個(gè)低代碼平臺的作用發(fā)揮到極致了,但如果對于其他業(yè)務(wù),不包含流程的需求支持度不好,任何一個(gè)操作都需要轉(zhuǎn)化為流程,比如編輯自己客戶的信息,原本編輯修改的操作要改成發(fā)起修改流程,即使不需要審批。
總的來說,低代碼平臺是利大于弊的,但也需要結(jié)合自身業(yè)務(wù)來確認(rèn),比如,對頁面要求很大但又不需要流程的系統(tǒng)來說,該套平臺是不適用的,強(qiáng)行使用反而耽誤工期,影響系統(tǒng)效果。所以利弊了解清楚才是關(guān)鍵。低代碼平臺的本身也是用傳統(tǒng)開發(fā)模式開發(fā)出來為大家提供便利的,因此并不能說低代碼平臺可以完全取代傳統(tǒng)的開發(fā)方式,兩者是并存的,無須因?yàn)椴糠值南拗仆耆懦獾痛a平臺,也無須完全無視這部分限制而堅(jiān)持使用,畢竟開發(fā)一套系統(tǒng)需要消耗人力物力,所以選擇上還是很重要的。希望每一個(gè)系統(tǒng)設(shè)計(jì)人員可以在充分了解低代碼平臺的優(yōu)缺點(diǎn)的基礎(chǔ)上,結(jié)合自身系統(tǒng)的業(yè)務(wù)需求,選擇合適的開發(fā)方式,充分發(fā)揮低代碼平臺的優(yōu)勢,提高開發(fā)效率。