隨著 LCDP(低代碼開發(fā)平臺) 不斷被公眾認(rèn)知,規(guī)模也在日益擴(kuò)大,正在不斷地驚醒著每個開發(fā)者,變革才是出路。由此我們簡單帶出我們今天要談的WorkFlow工作流引擎。
WorkFlow工作流引擎目前是以BPMN和Active工作流為兩大陣營為主,源代碼以:Java、net為主,而PHP幾乎沒有工作流引擎(這就很尷尬了)。
說完大體情況,我們開始進(jìn)入正文:
什么是工作流引擎(Workflow Engine )
開發(fā)一個系統(tǒng),最關(guān)鍵的部分不是系統(tǒng)的界面,也不是和數(shù)據(jù)庫之間的信息交換,而是如何根據(jù)業(yè)務(wù)邏輯開發(fā)出符合實(shí)際需要的程序邏輯并確保其穩(wěn)定性、易維護(hù)性(模塊化和結(jié)構(gòu)化)和彈性(容易根據(jù)實(shí)際業(yè)務(wù)邏輯的變化作出程序上的變動,例如決策權(quán)的改變、組織結(jié)構(gòu)的變動和由于業(yè)務(wù)方向的變化產(chǎn)生的全新業(yè)務(wù)邏輯等等)。 Workflow 引擎解決的就是這個問題:如果應(yīng)用程序缺乏強(qiáng)大的邏輯層,勢必變得容易出錯。
就好比一輛汽車,外表做得再漂亮,如果發(fā)動機(jī)有問題就只是一個擺設(shè)。應(yīng)用系統(tǒng)的彈性就好比引擎轉(zhuǎn)速方面的性能,加速到100 公里需要1 個小時(業(yè)務(wù)流程發(fā)生變動需要進(jìn)行半年的程序修改)還能叫好車嗎?引擎動不動就熄火(程序因?yàn)檫壿嫷膯栴}陷入死循環(huán))的車還敢開嗎?(來源于百度百科)
為什么要用工作流引擎?
為了解釋這個問題,我們來舉個例子:
應(yīng)用場景: 張三工程師正在研發(fā)一套OA、ERP等企業(yè)信息管理平臺
客戶需求: 有個物資系統(tǒng),客戶希望這么做,A填寫申請表——B部門經(jīng)理審核——C物資管理部確認(rèn)——D張三領(lǐng)用物資
張三工程師: 立刻開始了業(yè)務(wù)需求調(diào)研,分析,總結(jié)。然后開始寫代碼了。業(yè)務(wù)表單很簡單(這里我們就忽略了)
審批設(shè)計:-1 退回修改 0 保存編輯 1部門經(jīng)理審核 2 物資部門確認(rèn) is_use 是否領(lǐng)用
根據(jù)設(shè)計:寫了如下代碼:
public function check(){ $code = input('code'); $userId = session('uid'); switch ($code){ case 1: //B核準(zhǔn) //一大堆邏輯代碼 break; case 2: //c物資部核準(zhǔn)` //一大堆邏輯代碼 break; default: //張三發(fā)起申請 //一大堆邏輯代碼 } }}
這時候,張三工程師,很快寫完了代碼。邏輯也正確,權(quán)限判斷完全沒問題,很高興的跟客戶開始了一系列的騷操作,并審核通過。
時間過了半個月,軟件還在運(yùn)維應(yīng)用期間。客戶給張三工程師打電話,我們領(lǐng)導(dǎo)說,要增加一個審核功能,
改為:A填寫申請表——B部門經(jīng)理審核——E主任核實(shí)——C物資管理部確認(rèn)——D張三領(lǐng)用物資
問題來了: 而這個客戶系統(tǒng),有數(shù)十條,類似的審核業(yè)務(wù)?如果都這樣變動?
這時候,求張三工程師的心里陰影面積?
總結(jié)下: 從上面的例子來說,不能說張三工程師的代碼邏輯有問題,業(yè)務(wù)邏輯有問題。但是問題在哪里?
我個人認(rèn)為,在于沒有很好處理業(yè)務(wù)與邏輯之間的關(guān)鍵因素。我們常說,信息管理系統(tǒng)業(yè)務(wù)是一半,工作流程是一半。如何整合好這兩個關(guān)系。需要應(yīng)用到工作流引擎。
廢話太多,來點(diǎn)實(shí)際~
用工作流解決上面張三工程師的問題
李四接手了,張三的業(yè)務(wù),全面分析了,下系統(tǒng)。決定開發(fā)個專門管理該公司的業(yè)務(wù)流程問題。 把業(yè)務(wù)與流程剝離。
通過可視化快速構(gòu)建。在2分鐘就完成了上面的邏輯架構(gòu),同樣的,改造了數(shù)十條業(yè)務(wù)邏輯。而這些,他只用了不到1個小時。
張三工程師,不可思議的說,原來還有工作流這東西~~~
總結(jié)來了
通過上面的小Demo應(yīng)該很容易看出工作流強(qiáng)大的優(yōu)勢在于哪里。
不管你業(yè)務(wù)怎么變化,流程怎么變化,都能通過可視化的拖拽設(shè)計,
把專業(yè)的流程驅(qū)動交給專業(yè)的流程引擎,歸集與統(tǒng)一。
你省去的不僅僅是流程的調(diào)研,客戶需求分析時間,
更是你寫if else 一大堆重復(fù)代碼的時間。
最后回到原題:
深入淺出,工作流引擎。LCDP(低代碼開發(fā)平臺)的出現(xiàn)并非偶然,而是在發(fā)展過程中的必然,專業(yè)化的表單設(shè)計,流程驅(qū)動,會打破傳統(tǒng)開發(fā)的弊端,為企業(yè)在快速構(gòu)建,數(shù)據(jù)驅(qū)動上提供先進(jìn)的技術(shù)生產(chǎn)力!
最后推薦幾個國產(chǎn)流程引擎:
PHP流程引擎TPflow https://gitee.com/ntdgg/tpflow PHP優(yōu)秀的工作流新秀
JAVA流程引擎Jflow:https://gitee.com/opencc/JFlow 堅持流程開發(fā)12年
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實(shí),本站將立刻刪除。