OneCode低代碼引擎技術(shù)揭秘(四)后端集成開(kāi)發(fā)方案(低代碼前端開(kāi)發(fā)平臺(tái))
前言
在剛剛過(guò)去的2022年,在平臺(tái)互聯(lián)互通的方面,阿里在第二季度推出開(kāi)源引擎 “LowCodeEngin”,國(guó)家隊(duì)信通院也應(yīng)市場(chǎng)需求在第四季度推出了《低代碼開(kāi)發(fā)平臺(tái)通用技術(shù)要求》,針對(duì)低代碼相關(guān)概念以及功能點(diǎn)新型了進(jìn)一步的規(guī)范和梳理。進(jìn)入到2023年的第一個(gè)季度隨著ChatGPT的強(qiáng)勢(shì)開(kāi)局更是將以“全民開(kāi)發(fā)”為宗旨的低代碼零代碼開(kāi)發(fā)強(qiáng)勢(shì)推向了普通公眾的面前。
一個(gè)全新的“低碼時(shí)代”呼之欲出,但這一切對(duì)于正處在風(fēng)口浪尖上的傳統(tǒng)軟件行業(yè)而言卻無(wú)疑是一種煎熬。更換賽道追跑“低代碼”對(duì)于長(zhǎng)期以業(yè)務(wù)定制開(kāi)發(fā)為主導(dǎo)的中小型行業(yè)軟件公司而言,其薄弱的技術(shù)積累成為了自主研發(fā)最大的屏障。集成和開(kāi)源二次開(kāi)發(fā)成為了傳統(tǒng)軟件行業(yè)緊跟時(shí)代的唯一選擇,低代碼領(lǐng)域開(kāi)源領(lǐng)域雖然不乏類似于阿里“LowCodeEngin”百度“amis”等一些優(yōu)秀開(kāi)源框架,但多數(shù)更多的側(cè)重在純前端展現(xiàn),而這些前端技術(shù)本身在學(xué)習(xí)難度以及其冗長(zhǎng)的工具鏈條使得其集成和嵌入變得極其復(fù)雜。
在這樣的背景下,CodeBee面向軟件開(kāi)發(fā)團(tuán)隊(duì)推出了基于OneCode的集成開(kāi)發(fā)方案。本文主要針對(duì)OneCode 的開(kāi)發(fā)編譯原理以及基礎(chǔ)工具使用做說(shuō)明。在后續(xù)的章節(jié)中將根據(jù)具體的示例以及部署管理等多個(gè)方面展開(kāi)描述。
一,OneCode技術(shù)原理及系統(tǒng)組成
OneCode由三塊自成體系的可獨(dú)立部署運(yùn)行的部分組成。前端引擎負(fù)責(zé)界面建模并按低代碼協(xié)議協(xié)議生成標(biāo)準(zhǔn)JSON,中后臺(tái)OneCode通過(guò)讀取標(biāo)準(zhǔn)JSON協(xié)議,完成后端的視圖建模,合并DSM后端服務(wù)建模系統(tǒng),完成完整的后端服務(wù)建模應(yīng)用,通過(guò)代碼工程完成前后端一體的出碼應(yīng)用。JDSCloud是OneCode的協(xié)同支撐系統(tǒng),除了常規(guī)的資源代碼空間管理外,提供了獨(dú)立的沙箱運(yùn)行環(huán)境。為OneCode 提供工程化的仿真版本Ops等服務(wù)。
二,OneCode開(kāi)發(fā)模式
(1)CodeFrist 模式(代碼優(yōu)先)
OneCode 本身基于Java語(yǔ)言體系,是在Java Spring 注解基礎(chǔ)上的一套擴(kuò)展子集,混合編譯引擎器通過(guò)擴(kuò)展注解構(gòu)建完整的Domain模型,通過(guò)讀取標(biāo)準(zhǔn)Spring 注解完成普通Web數(shù)據(jù)交付及調(diào)度過(guò)程,通過(guò)Domain域模型動(dòng)態(tài)渲染JS文件輸出為JSON交付給前端引擎構(gòu)建頁(yè)面。
OneCode代碼編譯原理
通用列表示例
表單示例
在開(kāi)源的組織機(jī)構(gòu)插件中,采用了完整的OneCode開(kāi)發(fā)完成,下午截取了一個(gè)典型的嵌入指標(biāo)的例子做了一個(gè)說(shuō)明。
真實(shí)代碼示例
為方便大家熟悉OneCode 基礎(chǔ)語(yǔ)法,OneCode平臺(tái)組件中還內(nèi)置了一款,在線的OneCode代碼編輯器,開(kāi)發(fā)者可以方便的直接在線編輯編譯OneCode代碼。
OneCode web在線IDE
為方便大家快速上手,OneCode 也提供了,各種簡(jiǎn)單模型的代碼模板工具,方便大家初期上手時(shí)快速構(gòu)建代碼結(jié)構(gòu)。
在代碼工具中為方便大家不同技術(shù)棧的接入,OneCode 也開(kāi)放了自定義模板的管理和構(gòu)建功能,方便大家自主進(jìn)行代碼結(jié)構(gòu)設(shè)計(jì)。
業(yè)務(wù)代碼模板
在完成編碼后可以調(diào)用云端的在線編譯功能個(gè),動(dòng)態(tài)完成代碼編譯,代碼編譯完成后可以下載到本地進(jìn)行集成也可以在線部署發(fā)布運(yùn)行。
在線編譯
(2),ViewFrist 視圖優(yōu)先(拖拽優(yōu)先)
通過(guò)視圖引擎拖拽完成前期的交互模型,然后選擇服務(wù)端代碼模板進(jìn)行,出碼來(lái)完成基礎(chǔ)代碼以及建模應(yīng)用。
用戶可以通過(guò),拖拽方式
(3),ModuleFrist (模型優(yōu)先)
OneCode除了在前端實(shí)現(xiàn)了標(biāo)準(zhǔn)化組件定義外,還額外提供了后端建模的工具DSM,并通過(guò)領(lǐng)域模型將二者打通。這樣在前端組件建模時(shí)便可以直接調(diào)用后端服務(wù)模型完成數(shù)據(jù)部分API構(gòu)建。而DSM模型工具也可以在后端建模時(shí)直接讀取前端組件屬性,打通前端動(dòng)作與后端服務(wù)的通訊能力。
(4)DSM逆向轉(zhuǎn)換
通過(guò)不同方式完成的DSM模型,可以通過(guò)OneCode 在視圖、Code 、以及Module 三種方式之間自由切換,利用相關(guān)工具完成仿真調(diào)試以及部署運(yùn)行。
傳統(tǒng)低代碼平臺(tái)基本上都是完全建立在JS的模型下,在初期建模時(shí)結(jié)構(gòu)還算清晰但經(jīng)過(guò)稍有點(diǎn)復(fù)雜的邏輯,構(gòu)建時(shí)代碼的冗余度以及結(jié)構(gòu)就會(huì)變得混亂,特別是頁(yè)跨頁(yè)面操作或者完成前后臺(tái)數(shù)據(jù)交互時(shí)。由于其腳本語(yǔ)言的特點(diǎn)無(wú)法完成實(shí)時(shí)校驗(yàn),只能運(yùn)行期測(cè)試才能發(fā)現(xiàn)問(wèn)題。采用低代碼構(gòu)建的頁(yè)面往往只是由于頁(yè)面中做了一些簡(jiǎn)單的組件增刪或者屬性樣式就該就會(huì)造成不可預(yù)期的結(jié)果,這大大降低了代碼的可維護(hù)度。OneCode所構(gòu)建的領(lǐng)域模型則很好的解決了這一問(wèn)題,在前后端任意模型發(fā)生變化時(shí)即可調(diào)用混合編譯,將頁(yè)面間的連接關(guān)系以及前后臺(tái)的數(shù)據(jù)關(guān)系進(jìn)行校驗(yàn)通知。在預(yù)編譯中提升整體的編譯能力。
(5)DSM第三方語(yǔ)言轉(zhuǎn)換
DSM出碼模塊采用了獨(dú)立的模板架構(gòu),除了可以以O(shè)neCode形式存在,還可以支持獨(dú)立的出碼模塊定制獨(dú)立的第三方語(yǔ)言模型輸出。