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