1.概述
UFLO是銳道自主研發(fā)的一款工作流引擎,它架構(gòu)于Spring、Hibernate之上,提供各種常見及不常見的業(yè)務(wù)流程流轉(zhuǎn)功能。UFLO提供了嵌入及獨(dú)立運(yùn)行兩種不同類型的使用模式,以實(shí)現(xiàn)單機(jī)及集群環(huán)境下業(yè)務(wù)流程開發(fā)需要。
所謂的嵌入式模式是指將UFLO的核心JAR放到我們的項(xiàng)目當(dāng)中,調(diào)用JAR中提供的API即可實(shí)現(xiàn)業(yè)務(wù)流程的流轉(zhuǎn)控制,這種模式較適用于應(yīng)用在生產(chǎn)環(huán)境中的單機(jī)部署模式,它的好處是簡(jiǎn)單、靈活、易部署調(diào)試。
如果我們的應(yīng)用需要在生產(chǎn)環(huán)境當(dāng)中以集群模式部署以應(yīng)付大規(guī)模的并發(fā)訪問(wèn),在采用UFLO時(shí)就需要讓其以獨(dú)立服務(wù)模式運(yùn)行。所謂的獨(dú)立服務(wù)運(yùn)行模式,是指將包含UFLO的應(yīng)用部署成一個(gè)獨(dú)立的應(yīng)用,這里稱之為UFLO Server,我們的業(yè)務(wù)系統(tǒng)則作為客戶端通過(guò)對(duì)UFLOServer遠(yuǎn)程調(diào)用,實(shí)現(xiàn)業(yè)務(wù)流程流轉(zhuǎn)的集中控制。
這里需要指出的是,UFLO中采用的獨(dú)立服務(wù)運(yùn)行模式而非一種純粹的獨(dú)立模式,也就是說(shuō)作為客戶端的業(yè)務(wù)系統(tǒng)對(duì)流程的所有請(qǐng)求并不全是通過(guò)UFLO Server遠(yuǎn)程調(diào)用來(lái)實(shí)現(xiàn)的,而只是諸如流程的啟動(dòng)、任務(wù)的完成、跳轉(zhuǎn)、回退等一些能影響流程走向的動(dòng)作才通過(guò)UFLOServer遠(yuǎn)程調(diào)用來(lái)實(shí)現(xiàn);對(duì)于普通的流程數(shù)據(jù)查看之類,不會(huì)對(duì)流程流轉(zhuǎn)產(chǎn)生影響的動(dòng)作則是應(yīng)用客戶端直接調(diào)用流程數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn),比如查詢待辦任務(wù)、查看流程圖、查詢?nèi)蝿?wù)歷史等。之所以這樣處理是為了最大程度提高業(yè)務(wù)系統(tǒng)客戶端的運(yùn)行效率,因?yàn)閷?duì)于查詢待辦任務(wù)、查看流程圖、查詢?nèi)蝿?wù)歷史等操作如果也通過(guò)遠(yuǎn)程調(diào)用UFLO Server來(lái)實(shí)現(xiàn),將會(huì)大大增加UFLOServer負(fù)擔(dān)及網(wǎng)絡(luò)開銷,系統(tǒng)速度也會(huì)變慢,從技術(shù)角度來(lái)看,實(shí)在沒(méi)有必要,所以在設(shè)計(jì)時(shí)對(duì)于這種類型操作我們客戶端應(yīng)用直接查詢流程數(shù)據(jù)庫(kù)即可,這種混合模式在保證集群環(huán)境可用前提下可最大限度提高系統(tǒng)使用效率。
以上介紹了UFLO獨(dú)立運(yùn)行模式基本原理,在實(shí)際使用當(dāng)中,開發(fā)人員是不需要處理某個(gè)流程調(diào)用是本地調(diào)用還是遠(yuǎn)程調(diào)用這些細(xì)節(jié)的,開發(fā)人員只需要采用我們提供的Client類,即可實(shí)現(xiàn)對(duì)業(yè)務(wù)流程的控制,至于是通過(guò)遠(yuǎn)程還是本地則由我們的Client類內(nèi)部完成,下圖為UFLO獨(dú)立運(yùn)行模式示意圖:
無(wú)論采用哪種模式,UFLO都提供了完善的API。目前UFLO當(dāng)中提供了uflo-core、uflo-console、uflo-client以及一個(gè)基于Eclipse插件開發(fā)的流程模版可視化設(shè)計(jì)器。
其中uflo-core模塊提供了流程流轉(zhuǎn)的核心控制功能,有了這個(gè)模塊就可以實(shí)現(xiàn)在J2EE環(huán)境下B/S應(yīng)用或C/S應(yīng)用當(dāng)中對(duì)業(yè)務(wù)流程的流程控制。
uflo-console模塊提供了基于WEB的流程運(yùn)行狀態(tài)監(jiān)視與待辦任務(wù)查看等相關(guān)功能,uflo-console表現(xiàn)層采用Dorado7實(shí)現(xiàn),可實(shí)現(xiàn)在網(wǎng)頁(yè)當(dāng)中對(duì)流程的各種監(jiān)控、流程圖查看、流程啟動(dòng)與仿真調(diào)試。通過(guò)待辦任務(wù)列表頁(yè)面,用戶可以看到指定用戶的待辦任務(wù)、過(guò)期任務(wù)及處理過(guò)的任務(wù)等。
uflo-client模塊則提供了一個(gè)訪問(wèn)UFLO Server的Client端的API,開發(fā)人員使用這個(gè)模塊,在配置好遠(yuǎn)程UFLOServer的地址及所需要的認(rèn)證信息后,就可以實(shí)現(xiàn)對(duì)遠(yuǎn)程UFLO Server的調(diào)用,實(shí)現(xiàn)流程流轉(zhuǎn)的統(tǒng)一控制。這里需要指出的是,UFLOServer使用的是REST風(fēng)格的HTTP請(qǐng)求暴露可供客戶端調(diào)用的相關(guān)服務(wù),因?yàn)檫@些服務(wù)走的是標(biāo)準(zhǔn)HTTP協(xié)議,響應(yīng)的信息以XML格式表現(xiàn),所以不僅僅可以用Java客戶端調(diào)用,其它支持REST風(fēng)格HTTP請(qǐng)求的語(yǔ)言一樣可調(diào)用UFLO Server。UFLOServer在暴露這些可供調(diào)用的REST風(fēng)格的服務(wù)時(shí),同時(shí)還添加了調(diào)用認(rèn)證功能,在認(rèn)證功能打開的情況下,客戶端請(qǐng)求在調(diào)用時(shí)必須要在其HTTP頭中提供合法的認(rèn)證信息,否則服務(wù)端將拒絕調(diào)用請(qǐng)求,這樣就可以保護(hù)UFLO Server免被非法調(diào)用。
最后為了快速定義UFLO運(yùn)行所需要的流程模版,我們還提供了一個(gè)基于Eclipse的流程模版設(shè)計(jì)器,該設(shè)計(jì)器以可視化、圖形化方式幫助我們盡快建立與業(yè)務(wù)吻合的流程模版。流程模版建立后,可通過(guò)設(shè)計(jì)器中提供的功能對(duì)模版進(jìn)行合法性驗(yàn)證,在驗(yàn)證無(wú)誤后可直接將流程模版部署到我們的UFLO Server對(duì)應(yīng)的數(shù)據(jù)庫(kù)當(dāng)中,設(shè)計(jì)器效果圖如下。
除了提供基于Eclipse插件的UFLO流程模版設(shè)計(jì)器外,UFLO還提供了一套基于網(wǎng)頁(yè)的流程模版設(shè)計(jì)器,網(wǎng)頁(yè)版的設(shè)計(jì)器提供了與Eclipse插件版設(shè)計(jì)器完全相同的功能,可實(shí)現(xiàn)在網(wǎng)頁(yè)當(dāng)中快速設(shè)計(jì)出我們所需要的業(yè)務(wù)流程模版,如下圖所示:
UFLO網(wǎng)頁(yè)版流程設(shè)計(jì)器目前可以在Chrome、Firefox之類非IE瀏覽器下運(yùn)行,操作方式與Eclipse插件版基本相同,同時(shí)還可以實(shí)現(xiàn)對(duì)現(xiàn)有流程模版的編輯覆蓋功能,點(diǎn)擊此處進(jìn)入U(xiǎn)FLO流程設(shè)計(jì)器在線演示。
更多建議: