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