轉自:
http://www.guodanpi.com/zblog/post/24.html
今天比較高興,上班一個小時就覺得終于把powerstone給研究清楚了,覺得可以開始依據(jù)這個版本有些自己的想法和修改,還是先總結一下powerstone的優(yōu)缺點:
1. 優(yōu)點:確實很好的解決了業(yè)務和工作流之間的數(shù)據(jù)傳遞。通過每個步驟的輸入和輸出參數(shù)定義,并通過保存每一步的輸出參數(shù)(直接保存到數(shù)據(jù)庫),來進行業(yè)務和工作流引擎的解耦,做到了“業(yè)務渾然不覺”在工作流中的這一點。
缺點:實際上業(yè)務部分的很多數(shù)據(jù)仍然依賴于工作流引擎的傳入,比如他的例子中的輸出參數(shù)“_orderID”幾乎是貫穿于整個業(yè)務的,而獲取這個值方法是通過工作流引擎得到(private方法)的Map中獲得,可以說這部分仍然使得業(yè)務不得不考慮工作流引擎的存在。
2. 優(yōu)點:提供了Spring MVC的基類,使用起來應該還是很方便的。業(yè)務方面基本上不用考慮工作流的存在,只需要關注業(yè)務的實現(xiàn)即可。
缺點:和作者討論過,他覺得使用MVC的方式不是一種對業(yè)務的侵入。我覺得侵入性還是比較大的。比如我這種用webwork的人對spring的mvc屬于白癡級,為了和現(xiàn)有系統(tǒng)交互,將會使用webwork框架開發(fā)工作流,就不能直接對powerstone實行“拿來主義”了,我倒更傾向于引擎提供接口出來,而不是強行的繼承Spring mvc被加工后的一個基類。
3. 優(yōu)點:使用url作為工作流與業(yè)務之間的交互數(shù)據(jù)接口,使用cookie作為部分數(shù)據(jù)的傳遞,使得工作流引擎和業(yè)務系統(tǒng)可以獨立發(fā)布。
缺點:使用url作為數(shù)據(jù)交換唯一接口的方式?jīng)Q定了引擎的工作范圍是基于http的b/s方式,如果想在一個app引用中驅(qū)動引擎將不可能,使用cookie是的數(shù)據(jù)的傳遞依賴于客戶端瀏覽器的設定,不利于工作流引擎的利用。就我目前的了解而言,cookie的讀取范圍是在同一個domain之類,也就是說雖然業(yè)務可以和引擎獨立發(fā)布,但是必須發(fā)布在同一domain的玉米(玉米:剛學的一個流行詞匯,哈哈)之下。
4. 優(yōu)點:powertone對部分數(shù)據(jù)的需求采取直接讀取源xpdl,這使得powerstone的實現(xiàn)是非常規(guī)范的,也是完全基于xpdl文檔開發(fā)的,有很好的通用型(基本上可以實現(xiàn)對xpdl的通吃)。
缺點:感覺沒有將xpdl的信息完全轉化為dbms存儲,使得一些關鍵信息仍然要使用xpdl的xml數(shù)據(jù)作為依據(jù),來爬xmldom這顆樹。當然,作者好像做了緩存,速度方面暫且不說,對于這種做法個人不是很贊同,應該完全有可能將xpdl的信息轉化到數(shù)據(jù)庫中。
5. 優(yōu)點:完全依照xpdl的“join”和“split”等規(guī)則處理合、分。基本上覆蓋了xpdl中定義的condition,采用每一步的輸出數(shù)據(jù)作為數(shù)據(jù)依據(jù)來進行condition的判斷。
缺點:感覺作者對condition等方法的處理不夠,很簡單的String比對和直接轉化為Integer等方法覺得遠遠不夠,個人打算引入ognl等表達式的處理,直接使用這些成熟的工具來作為condition等判斷語句的處理(當然現(xiàn)在也在考慮使用規(guī)則引擎drools來處理,但是覺得有點用牛刀之嫌),并將這塊獨立。
6. powertone的數(shù)據(jù)庫感覺非常臃腫,按照作者的思路確實走通了整個工作流,但是應該有更簡潔的數(shù)據(jù)庫設計,這一點也正是我最想改變的地方。
7. powerstone中完全采用引擎驅(qū)動業(yè)務的方式,沒有業(yè)務主動請求工作流的地方,作者介紹這是要嚴格分離兩邊的數(shù)據(jù),解耦處理的。但是個人覺得應該給業(yè)務留有主動要求加入工作流和獲取業(yè)務當前自身在工作流中所處狀態(tài)的能力,但是powerstone沒有這一點,不知道算設計上的優(yōu)點還是缺點。
其他的有點太多啦,由于沒有自己的想法就不說啦。
總得來說powerstone可以說是一個完全按照wfmc的規(guī)范實現(xiàn)的“乖孩子”,處理的很不錯,但是直接拿來用,還覺得需要自己加工,增加或減少點什么。
btw:逐漸從工作流的學習轉化為了powerstone的學習,不過個人覺得收獲還是挺大,馬上我就可以自己設計出工作流咯,哈哈。