最近公司項(xiàng)目經(jīng)理派我研究工作流并考慮在項(xiàng)目中使用。很有一些心得。工作流應(yīng)用我將之分為狹義工作流和廣義工作流。對(duì)狹義工作流而言,你可以將之理解為在工作流設(shè)計(jì)器里畫(huà)畫(huà)節(jié)點(diǎn)以及方向箭頭,設(shè)置好就節(jié)點(diǎn)數(shù)據(jù),動(dòng)作就差不多了。(具體可以參見(jiàn)jbpm的websale這個(gè)demo)。
廣義的工作流是對(duì)服務(wù)之間的整合。核心問(wèn)題是業(yè)務(wù)節(jié)點(diǎn)和工作流節(jié)點(diǎn)之間的映射,以及業(yè)務(wù)數(shù)據(jù)和工作流數(shù)據(jù)之間的映射,和普通工作流一樣還有流程判斷等等服務(wù)。實(shí)現(xiàn)了這些,各個(gè)業(yè)務(wù)模塊之間的數(shù)據(jù)就可以通過(guò)服務(wù),以定好的方式(進(jìn)行方向控制和格式轉(zhuǎn)化)在各個(gè)節(jié)點(diǎn)之間流通,達(dá)到了服務(wù)整合的目的。
IBM為ESB定義了四個(gè)必備的功能:“路由器”——根據(jù)信息內(nèi)容,在不同應(yīng)用和服務(wù)之間進(jìn)行信息傳輸和路由;“轉(zhuǎn)換器”——進(jìn)行應(yīng)用之間的通信協(xié)議轉(zhuǎn)換;“翻譯機(jī)”——進(jìn)行應(yīng)用之間的消息格式轉(zhuǎn)換;“收發(fā)室”——處理來(lái)自不同渠道的業(yè)務(wù)事件(同步傳輸,異步傳輸,發(fā)布/訂閱等方式)。
其中“路由器”和“收發(fā)室”都是針對(duì)服務(wù)的重用而設(shè)計(jì)的,而“轉(zhuǎn)換器”和“翻譯機(jī)”則專門(mén)用來(lái)解決異構(gòu)的通信問(wèn)題。
針對(duì)重用和異構(gòu)這兩個(gè)難題,倪曉兵認(rèn)為ESB提供了兩個(gè)核心的功能,服務(wù)的管理和數(shù)據(jù)的轉(zhuǎn)換。
我們DEC項(xiàng)目的目標(biāo)就是建立一個(gè)全能服務(wù)倉(cāng)庫(kù)(暫時(shí)我在DEC設(shè)計(jì)人員zy哪里得到的信息),而服務(wù)之間如何路由,如何轉(zhuǎn)換,語(yǔ)義的協(xié)調(diào)都沒(méi)有考慮,而后者卻是成敗的關(guān)鍵。
最關(guān)鍵的語(yǔ)義翻譯這一點(diǎn),就現(xiàn)在的技術(shù)上來(lái)說(shuō)還不能做到(需要很高的機(jī)器智能才能達(dá)到使得不同的系統(tǒng)的業(yè)務(wù)詞匯可以正確的映射,更何況是在所有的系統(tǒng)之間進(jìn)行映射,同時(shí)應(yīng)用在企業(yè)級(jí)的應(yīng)用環(huán)境中)
也許真的有這樣的幻想,但是真的能夠做到這一步么?我深深的懷疑。就目前的技術(shù)手段,如果要達(dá)到數(shù)據(jù)映射的高度正確性,必須由人不同系統(tǒng)之間需要協(xié)調(diào)的數(shù)據(jù)進(jìn)行語(yǔ)義確認(rèn)方能進(jìn)行有效的映射。
當(dāng)考慮到還必須做到ESB系統(tǒng)對(duì)其接入的所有的服務(wù)數(shù)據(jù)的語(yǔ)義都這樣做時(shí)。我懷疑真的需要做到協(xié)調(diào)所有的服務(wù)么?
也許ESB的應(yīng)用范圍就是在公司內(nèi)部或者有限范圍內(nèi)的整合目標(biāo)明確的業(yè)務(wù)節(jié)點(diǎn)之間業(yè)務(wù)的整合。