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