低代碼:可視化邏輯編排選型(低代碼設(shè)計(jì))
編輯導(dǎo)讀:業(yè)務(wù)邏輯的代碼繁瑣且無(wú)用,只能讓程序員在做低水平的重復(fù)工作。有痛點(diǎn)就會(huì)有需求,一些低代碼平臺(tái)推出了可視化邏輯編排能力,能夠很好地解決這個(gè)問(wèn)題。本文作者對(duì)此進(jìn)行了分析,希望對(duì)你有幫助。
一、業(yè)務(wù)邏輯代碼在軟件工程中的地位
在企業(yè)中開(kāi)發(fā)一個(gè)業(yè)務(wù)系統(tǒng),公認(rèn)最頻繁和最無(wú)用的就是寫(xiě)業(yè)務(wù)邏輯的代碼,這些代碼工作本身并不能提升程序員的綜合實(shí)力,只能讓程序員在做低水平的重復(fù)鍛煉,這里面的業(yè)務(wù)邏輯代碼可能會(huì)涉及很多很多框架、性能、新技術(shù)上的處理,但是應(yīng)用這些內(nèi)容和業(yè)務(wù)邏輯代碼本身沒(méi)有關(guān)系,程序員應(yīng)該更多地把精力放在提升自己的核心競(jìng)爭(zhēng)力上。
那么有需求就有市場(chǎng),一些服務(wù)能力也順應(yīng)而生,我們這次來(lái)認(rèn)識(shí)一下低代碼平臺(tái)中的可視化邏輯編排能力。
二、什么是可視化邏輯編排
如果把程序猿寫(xiě)代碼的過(guò)程視作不可視的,那可視就是把程序猿寫(xiě)代碼的過(guò)程做了一層交互設(shè),讓普羅大眾看著更容易去理解程序猿寫(xiě)代碼這個(gè)過(guò)程甚至能上手操作,那可視化邏輯編排,就是在可視化的基礎(chǔ)上加入特點(diǎn)場(chǎng)景,比如無(wú)腦的P圖軟件就是把PS這種針對(duì)像素點(diǎn)的處理能力做了一層簡(jiǎn)單的封裝,降低了用戶的使用門(mén)檻;低代碼平臺(tái)的可視化邏輯編排,就是把程序猿通過(guò)IDE寫(xiě)代碼的過(guò)程做了一層封裝,降低用戶的使用門(mén)檻甚至提升開(kāi)發(fā)效率。
三、類(lèi)代碼的可視化邏輯編排
1. 微搭-事件
微搭的事件由【觸發(fā)條件】 【執(zhí)行動(dòng)作】&【動(dòng)作參數(shù)】組成。
業(yè)務(wù)場(chǎng)景舉例:當(dāng)前按鈕點(diǎn)擊后需要重定向至指定頁(yè)面。
我們可以通過(guò)平臺(tái)提供的重定向的方法,給按鈕組件配置一個(gè)觸發(fā)條件,如【tap點(diǎn)擊】,當(dāng)組件被點(diǎn)擊事件觸發(fā)后,則會(huì)重定向到我們配置的定向頁(yè)面去,即:
從下圖看到微搭的邏輯編排是以組件的動(dòng)作為主體來(lái)進(jìn)行活動(dòng)的,多個(gè)動(dòng)作會(huì)進(jìn)行排列展示,也就意味著整個(gè)業(yè)務(wù)邏輯編排會(huì)變成一個(gè)個(gè)散點(diǎn)分布在頁(yè)面組件上,用戶如果需要知道具體的邏輯需要點(diǎn)進(jìn)去每個(gè)組件的每個(gè)動(dòng)作進(jìn)行查看。
2. Ivx-事件流
Ivx的事件流由【觸發(fā)事件】 【前置條件】 【目標(biāo)對(duì)象】 【執(zhí)行動(dòng)作】&【動(dòng)作參數(shù)】組成。
場(chǎng)景舉例:每觸發(fā)一次按鈕點(diǎn)擊,則自動(dòng)新增一行表單錄入來(lái)給用戶錄入,以達(dá)到添加多條記錄的效果。
Ivx的編排機(jī)制比較復(fù)雜,這里我們需要先構(gòu)建一個(gè)區(qū)塊,這個(gè)區(qū)塊包含了我們需要的按鈕與表單輸入控件,然后我們需要實(shí)現(xiàn)的效果是點(diǎn)擊按鈕自動(dòng)新增對(duì)應(yīng)的表單組件來(lái)錄入多條記錄(注意這里不是表格組件新增行);Ivx這里提供的是一種按編程思維進(jìn)行的邏輯編排形式,我們需要在上面創(chuàng)建好的區(qū)塊內(nèi)創(chuàng)建好表單錄入對(duì)應(yīng)的數(shù)據(jù)源組件(二維數(shù)組組件)以及邏輯組件(for循環(huán)創(chuàng)建組件),然后通過(guò)按鈕的事件流來(lái)觸發(fā)數(shù)組的數(shù)據(jù)改變,再通過(guò)數(shù)組組件的數(shù)據(jù)變化來(lái)觸發(fā)循環(huán)創(chuàng)建行為,從而添加多行表單記錄組件。
其中按鈕的事件流我們可以看到它通過(guò)【點(diǎn)擊】事件觸發(fā)【二維數(shù)組】這個(gè)對(duì)象,讓它做【添加一行數(shù)據(jù)】的行為。
四、流程圖化的可視化邏輯編排
1. Mendix-微流
Mendix的微流采用了BPMN標(biāo)準(zhǔn)化圖形符號(hào)來(lái)進(jìn)行業(yè)務(wù)邏輯的編排,這里需要普及一下BPMN是個(gè)啥東西:BPMN – Business Process Modeling Notation,業(yè)務(wù)流程建模符號(hào),粗暴一點(diǎn)理解,BPM要通過(guò)流程圖表達(dá),BPMN定義好了標(biāo)準(zhǔn)的圖例,用戶使用標(biāo)準(zhǔn)圖例來(lái)畫(huà)流程圖,只是這個(gè)流程圖表達(dá)了一個(gè)強(qiáng)業(yè)務(wù)語(yǔ)義強(qiáng)邏輯的流程。
場(chǎng)景舉例:在詳情頁(yè)中當(dāng)用戶輸入姓名失焦后時(shí)間字段自動(dòng)獲取當(dāng)前時(shí)間。
Mendix的邏輯編排的核心思想是把控制顆粒度細(xì)化到后端實(shí)體屬性然后把設(shè)計(jì)好的微流掛載在前端頁(yè)面元素的事件上進(jìn)行觸發(fā),所以我們先進(jìn)入Mendix的微流設(shè)計(jì)器,針對(duì)我們的場(chǎng)景我們做了這樣的一個(gè)邏輯假設(shè),當(dāng)系統(tǒng)判斷姓名字段不是空的時(shí)候,就給時(shí)間字段賦值當(dāng)前系統(tǒng)時(shí)間;那懂流程圖的看圖應(yīng)該也能看出來(lái)這個(gè)條件判斷邏輯,再選中節(jié)點(diǎn)來(lái)看具體節(jié)點(diǎn)的邏輯,就能知道我們這個(gè)微流是怎么轉(zhuǎn)的,最后系統(tǒng)怎么執(zhí)行這個(gè)微流,就是靠頁(yè)面上的【姓名】字段的輸入框組件對(duì)應(yīng)的【on change aciton】上,當(dāng)輸入框的值變化時(shí)則會(huì)觸發(fā)對(duì)應(yīng)的微流,從而實(shí)現(xiàn)我們上述的場(chǎng)景。
2. 宜搭-審批流
相比起Mendix的微流,宜搭的審批流就像是微流的定制版,只用于一些審批流程的設(shè)置。
場(chǎng)景舉例:公司采購(gòu)進(jìn)出貨商品流程,根據(jù)一定進(jìn)貨商品數(shù)量做審批。
雖說(shuō)宜搭的審批流像是Mendix微流的定制版,但是用法卻大大不同,宜搭不是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)導(dǎo)向,而是表單驅(qū)動(dòng)設(shè)計(jì),所以它的審批流是建立在流程表單已經(jīng)設(shè)計(jì)好的基礎(chǔ)上,根據(jù)用戶設(shè)計(jì)的流程表單進(jìn)行審批流的編排;宜搭的審批流設(shè)計(jì)就是拉一堆節(jié)點(diǎn)出來(lái)做條件判斷和具體執(zhí)行,比如我設(shè)置進(jìn)貨數(shù)量大于等于200個(gè)的情況需要兩個(gè)角色審批,進(jìn)貨數(shù)量小于200個(gè)的情況只需一個(gè)角色審批,即可通過(guò)以下流程圖實(shí)現(xiàn)。
五、文字表達(dá)與圖形表達(dá)
大家看完上面兩大類(lèi)的可視化編排形式,有沒(méi)有什么感受呢?如果說(shuō)類(lèi)代碼的可視化編排是一種文字表達(dá),流程圖話的邏輯編排是一種圖形表達(dá),那這個(gè)分析點(diǎn)就可以轉(zhuǎn)換為文字表達(dá)與圖形表達(dá)兩種表達(dá)方式的對(duì)比了。
這里不得不從文字的起源說(shuō)起,象形文字,就是對(duì)原始圖形的一個(gè)符號(hào)性的描述,一開(kāi)始的象形文字都和對(duì)應(yīng)的實(shí)物長(zhǎng)得很像,往后發(fā)展才變成了我們現(xiàn)在的文字,然后我們又會(huì)用文字來(lái)描述圖形,同樣的也會(huì)用圖形的表達(dá)文字;那么圖形和文字哪個(gè)的表達(dá)力更強(qiáng)呢?其實(shí)沒(méi)有一個(gè)絕對(duì)的說(shuō)法;比如古代詩(shī)人的詩(shī)詞寥寥數(shù)語(yǔ),要用什么圖形才能清晰表達(dá)呢?又好像“太極”兩個(gè)字,再說(shuō)一百遍都不如黑白兩儀圖形生動(dòng)。
六、針對(duì)兩類(lèi)邏輯編排工具進(jìn)行分析比對(duì)
那既然從原始的表達(dá)形式來(lái)討論分析不出個(gè)優(yōu)劣,那我們從應(yīng)用層面來(lái)反證:邏輯編排,都少不了節(jié)點(diǎn),那么節(jié)點(diǎn)的顆粒度大小就很影響編排的實(shí)現(xiàn)形式;
如果邏輯節(jié)點(diǎn)的抽象程度足夠高,不需要過(guò)多地去定制化邏輯節(jié)點(diǎn),那么流程圖化的邏輯編排則適用;
如果數(shù)據(jù)流線路畢竟復(fù)雜,邏輯節(jié)點(diǎn)無(wú)法通過(guò)抽象進(jìn)行復(fù)用,再應(yīng)用流程圖化的邏輯編排則會(huì)使得整個(gè)邏輯編排變得十分復(fù)雜,幾乎不可維護(hù);這時(shí)候就需要類(lèi)代碼的邏輯編碼,并且邏輯節(jié)點(diǎn)的顆粒度也得足夠細(xì);
原則:流程圖編排不適合過(guò)于復(fù)雜的邏輯編排,太多復(fù)雜的邏輯需要使用類(lèi)代碼的可視化編排。
七、感悟
企業(yè)在考慮應(yīng)用低代碼平臺(tái)或者自己生產(chǎn)低代碼平臺(tái),建議尋找某些原則之后才來(lái)進(jìn)行相對(duì)應(yīng)的規(guī)劃設(shè)計(jì)與落地,上述原則不一定適用每個(gè)場(chǎng)景,只是希望每個(gè)低代碼領(lǐng)域的踐行者都能往前踏一步,哪怕是一小步,大家去探索不一樣的方向,給這個(gè)領(lǐng)域添燈添火!
本文由 @陳起gogogo 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議