1.
從《功夫》說起
時下的新新人類看到我,一定會認為在下是個十足的老古董,這不,《功夫》這樣的片子我到今年
2
月底才看。不過看過《功夫》,我想的一定比一般的人多:周星星浪跡江湖,和他胖子大哥出去敲竹桿時,為什么要他大哥胸前畫兩把斧頭?找個假靠山唄!裝是斧頭幫的人才不會被人欺負啊。
這讓我想到年前的一則新聞:
jbpm joins jboss and becomes jboss-jbpm
。也就是說了,
jbpm
找了個靠山
jboss
,以后不用自己在外流浪了。
好,我們轉(zhuǎn)入正題,談這里說的三大主流開源工作流引擎:
Shark,osworkflow,jbpm
。
Shark
的靠山是
Enhydra
。
Enhydra
做過什么呢?多了!從
j2ee
應用服務器,到
o/r mapping
工具,到這個工作流引擎等等。為什么
Shark
的持久層采用
DODS
來實現(xiàn)?就是因為他們是一家人。
Jbpm
的靠山是
jboss
。
Jbpm3
的持久層采用
hibernate3
來實現(xiàn),也是因為這個原因吧。
Jbpm3
的圖形化流程定義已經(jīng)決定嵌入到
jboss eclipse IDE
中,大家看看
jboss eclipse IDE preview 1.5
版,我們已經(jīng)可以用插件方式編輯一個
jbpm3
流程定義文件了。
Osworkflow
的靠山是
opensymphony
。我是非常喜歡這個組織的,它做出了很多的好東西。在開發(fā)工作流管理系統(tǒng)時,我就推薦用它的另外一個東西:
webwork2
。筆者主持的開源工作流引擎
AgileFlow
就是基于
ww2+spring+hibernate
架構(gòu)實現(xiàn)的。
完成本段時說句題外話:現(xiàn)在基本上所有的
J2EE
應用程序服務器都有自己的工作流引擎,如上面提到的
Enhydra,jboss
和沒有提到的
websphere
和
weblogic
等,可見,學習工作流引擎技術(shù)的確是非常重要的。
2.
如來神掌
光有靠山是不行的,周星星加入了斧頭幫還不是被邪神打扁了頭?要救自己,還是要靠如來神掌。
Shark
的流程定義語言是
XPDL
,我們知道,
XPDL
的兩個最重要的概念是
Process
和
Activity
。
XPDL
中的
Activity
是基于
UML1.x
中的活動圖的概念。活動圖天生的適于工作流程建模,它相對于狀態(tài)圖的一個最大的優(yōu)點是容易做并發(fā)線程的分叉控制,這些并發(fā)線程可以同時執(zhí)行也可以順序執(zhí)行;它還有一個優(yōu)點是有泳道的概念,可以控制工作流引擎中的任務的產(chǎn)生。
Shark
的如來神掌是活動圖。
Osworkflow
的如來神掌又是什么呢?我們知道,它有個重要概念是
State……
呵呵,我們知道了,它的如來神掌是
FSM
。不知道
FSM
是什么東西??那你讀大學時肯定不是好學生;當然了,不知道也不打緊,你把他類似理解為狀態(tài)圖就可以了。
Osworkflow
中的
State
是由
step
和
status
聯(lián)合表達的,一個
State
就是一個
step
中的某個
status
;而
state
的轉(zhuǎn)換由
action
來驅(qū)動,類似狀態(tài)圖中的
event,
因為一個
event
對應一個
action
嘛。
Jbpm
的如來神掌就沒有上面的簡單了,它結(jié)合應用了狀態(tài)圖
+
活動圖
+PetriNet
的知識,而且,這里的活動圖還是
UML2.0
版的。
UML2.0
的活動圖中,節(jié)點不叫活動(
Activity
)而叫動作
(action)
,活動成了一個高層次的概念,它包含一個動作序列。一個活動圖展現(xiàn)一系列的動作,這些動作組成了活動。
Jbpm
把
action
也改名了,稱為
state
。
Jbpm
使用的狀態(tài)圖的概念有
transition/event
等,這個自己去看吧。
Jbpm
來內(nèi)部實現(xiàn)中還采用了
PetriNet
的概念,如
token,signal
等。什么?又不知道
PetriNet
什么東東?那你大學是學計算機的嗎?不是?那你可能是學文科的,學機械
/
電氣
/
土木工程
/
交通運輸?shù)葘I(yè)都有接觸
PetriNet
的課程,如果沒有學過,還是看看
jbpm
吧,反正我們也不搞理論,知道大致概念就行。
3.
市場預測
做預測是件吃力不討好的事情,好多國外的大師做的預測也是被人罵得
……
幸虧我去年年中在《工作流之大局勢》中做的預測還是基本正確。那時我的預測是:
Shark……
將登上頭號寶座。應該說,在那篇文章發(fā)表前,國內(nèi)的工作流引擎使用率最高的是
osworkflow;
到去年年底,
Shark
就占有了明顯的優(yōu)勢地位,我分析有如下原因:
1)????????????
國內(nèi)的企業(yè)都看中
XPDL
,因為這意味著在產(chǎn)品說明書中又可以吹牛說“我們遵循
WFMC……
”
2)????????????
因為我自詡“
Shark
工作流引擎在國內(nèi)的主要推廣者”,大部分給我反饋工作流管理系統(tǒng)開發(fā)選用技術(shù)的朋友都是用的
Shark
3)????????????
Shark
的確是一套不錯的工作流引擎,就算你只是想學習
XPDL
,你也可以從學習
Shark
開始
現(xiàn)在已經(jīng)到了《工作流之大局勢》中說的從封建社會向資本主義轉(zhuǎn)型的時代,而驅(qū)動這一轉(zhuǎn)型的,不是別人,正是上面說的
jbpm
。
Jbpm3
將在
3
月發(fā)布阿爾發(fā)版,
jbpm3
的最終版將支持
bpel4ws
的核心部分。所以,我估計,
Shark
將在引領風騷數(shù)百天后,被
jbpm3
趕下第一寶座。筆者的開源敏捷工作流開發(fā)框架
AgileFlow
將整合
jbpm3
,同時對
agile
引擎和
jbpm3
引擎提供支持。
但
bpel4ws
真的就和我們這么快的親密接觸了嗎?沒有。我估計在今年它是不會真正走進我們的生活的,那會是什么時候呢?這將是我下篇文章要預測的內(nèi)容,我現(xiàn)在可不敢亂說,我現(xiàn)在考慮的是,是不是要自詡“
jbpm3
工作流引擎在國內(nèi)的主要推廣者”,呵呵。
轉(zhuǎn)自:http://blog.csdn.net/hongbo781202/archive/2005/02/28/304751.aspx