duansky'weblog

          統(tǒng)計(jì)

          留言簿(3)

          友情鏈接

          閱讀排行榜

          評(píng)論排行榜

          三大主流工作流引擎技術(shù)分析與市場(chǎng)預(yù)測(cè)

          1. 從《功夫》說起

          時(shí)下的新新人類看到我,一定會(huì)認(rèn)為在下是個(gè)十足的老古董,這不,《功夫》這樣的片子我到今年 2 月底才看。不過看過《功夫》,我想的一定比一般的人多:周星星浪跡江湖,和他胖子大哥出去敲竹桿時(shí),為什么要他大哥胸前畫兩把斧頭?找個(gè)假靠山唄!裝是斧頭幫的人才不會(huì)被人欺負(fù)啊。

          這讓我想到年前的一則新聞: jbpm joins jboss and becomes jboss-jbpm 。也就是說了, jbpm 找了個(gè)靠山 jboss ,以后不用自己在外流浪了。

          好,我們轉(zhuǎn)入正題,談這里說的三大主流開源工作流引擎: Shark,osworkflow,jbpm

          Shark 的靠山是 Enhydra Enhydra 做過什么呢?多了!從 j2ee 應(yīng)用服務(wù)器,到 o/r mapping 工具,到這個(gè)工作流引擎等等。為什么 Shark 的持久層采用 DODS 來實(shí)現(xiàn)?就是因?yàn)樗麄兪且患胰恕?/span>

          Jbpm 的靠山是 jboss Jbpm3 的持久層采用 hibernate3 來實(shí)現(xiàn),也是因?yàn)檫@個(gè)原因吧。 Jbpm3 的圖形化流程定義已經(jīng)決定嵌入到 jboss eclipse IDE 中,大家看看 jboss eclipse IDE preview 1.5 版,我們已經(jīng)可以用插件方式編輯一個(gè) jbpm3 流程定義文件了。

          Osworkflow 的靠山是 opensymphony 。我是非常喜歡這個(gè)組織的,它做出了很多的好東西。在開發(fā)工作流管理系統(tǒng)時(shí),我就推薦用它的另外一個(gè)東西: webwork2 。筆者主持的開源工作流引擎 AgileFlow 就是基于 ww2+spring+hibernate 架構(gòu)實(shí)現(xiàn)的。

          完成本段時(shí)說句題外話:現(xiàn)在基本上所有的 J2EE 應(yīng)用程序服務(wù)器都有自己的工作流引擎,如上面提到的 Enhydra,jboss 和沒有提到的 websphere weblogic 等,可見,學(xué)習(xí)工作流引擎技術(shù)的確是非常重要的。

          2. 如來神掌

          光有靠山是不行的,周星星加入了斧頭幫還不是被邪神打扁了頭?要救自己,還是要靠如來神掌。

          Shark 的流程定義語言是 XPDL ,我們知道, XPDL 的兩個(gè)最重要的概念是 Process Activity XPDL 中的 Activity 是基于 UML1.x 中的活動(dòng)圖的概念。活動(dòng)圖天生的適于工作流程建模,它相對(duì)于狀態(tài)圖的一個(gè)最大的優(yōu)點(diǎn)是容易做并發(fā)線程的分叉控制,這些并發(fā)線程可以同時(shí)執(zhí)行也可以順序執(zhí)行;它還有一個(gè)優(yōu)點(diǎn)是有泳道的概念,可以控制工作流引擎中的任務(wù)的產(chǎn)生。 Shark 的如來神掌是活動(dòng)圖。

          Osworkflow 的如來神掌又是什么呢?我們知道,它有個(gè)重要概念是 State…… 呵呵,我們知道了,它的如來神掌是 FSM 。不知道 FSM 是什么東西??那你讀大學(xué)時(shí)肯定不是好學(xué)生;當(dāng)然了,不知道也不打緊,你把他類似理解為狀態(tài)圖就可以了。 Osworkflow 中的 State 是由 step status 聯(lián)合表達(dá)的,一個(gè) State 就是一個(gè) step 中的某個(gè) status ;而 state 的轉(zhuǎn)換由 action 來驅(qū)動(dòng),類似狀態(tài)圖中的 event, 因?yàn)橐粋€(gè) event 對(duì)應(yīng)一個(gè) action 嘛。

          Jbpm 的如來神掌就沒有上面的簡(jiǎn)單了,它結(jié)合應(yīng)用了狀態(tài)圖 + 活動(dòng)圖 +PetriNet 的知識(shí),而且,這里的活動(dòng)圖還是 UML2.0 版的。 UML2.0 的活動(dòng)圖中,節(jié)點(diǎn)不叫活動(dòng)( Activity )而叫動(dòng)作 (action) ,活動(dòng)成了一個(gè)高層次的概念,它包含一個(gè)動(dòng)作序列。一個(gè)活動(dòng)圖展現(xiàn)一系列的動(dòng)作,這些動(dòng)作組成了活動(dòng)。 Jbpm action 也改名了,稱為 state Jbpm 使用的狀態(tài)圖的概念有 transition/event 等,這個(gè)自己去看吧。 Jbpm 來內(nèi)部實(shí)現(xiàn)中還采用了 PetriNet 的概念,如 token,signal 等。什么?又不知道 PetriNet 什么東東?那你大學(xué)是學(xué)計(jì)算機(jī)的嗎?不是?那你可能是學(xué)文科的,學(xué)機(jī)械 / 電氣 / 土木工程 / 交通運(yùn)輸?shù)葘I(yè)都有接觸 PetriNet 的課程,如果沒有學(xué)過,還是看看 jbpm 吧,反正我們也不搞理論,知道大致概念就行。

          3. 市場(chǎng)預(yù)測(cè)

          做預(yù)測(cè)是件吃力不討好的事情,好多國(guó)外的大師做的預(yù)測(cè)也是被人罵得 …… 幸虧我去年年中在《工作流之大局勢(shì)》中做的預(yù)測(cè)還是基本正確。那時(shí)我的預(yù)測(cè)是: Shark…… 將登上頭號(hào)寶座。應(yīng)該說,在那篇文章發(fā)表前,國(guó)內(nèi)的工作流引擎使用率最高的是 osworkflow; 到去年年底, Shark 就占有了明顯的優(yōu)勢(shì)地位,我分析有如下原因:

          1)???????????? 國(guó)內(nèi)的企業(yè)都看中 XPDL ,因?yàn)檫@意味著在產(chǎn)品說明書中又可以吹牛說“我們遵循 WFMC……

          2)???????????? 因?yàn)槲易栽偂?/span> Shark 工作流引擎在國(guó)內(nèi)的主要推廣者”,大部分給我反饋工作流管理系統(tǒng)開發(fā)選用技術(shù)的朋友都是用的 Shark

          3)???????????? Shark 的確是一套不錯(cuò)的工作流引擎,就算你只是想學(xué)習(xí) XPDL ,你也可以從學(xué)習(xí) Shark 開始

          現(xiàn)在已經(jīng)到了《工作流之大局勢(shì)》中說的從封建社會(huì)向資本主義轉(zhuǎn)型的時(shí)代,而驅(qū)動(dòng)這一轉(zhuǎn)型的,不是別人,正是上面說的 jbpm Jbpm3 將在 3 月發(fā)布阿爾發(fā)版, jbpm3 的最終版將支持 bpel4ws 的核心部分。所以,我估計(jì), Shark 將在引領(lǐng)風(fēng)騷數(shù)百天后,被 jbpm3 趕下第一寶座。筆者的開源敏捷工作流開發(fā)框架 AgileFlow 將整合 jbpm3 ,同時(shí)對(duì) agile 引擎和 jbpm3 引擎提供支持。

          bpel4ws 真的就和我們這么快的親密接觸了嗎?沒有。我估計(jì)在今年它是不會(huì)真正走進(jìn)我們的生活的,那會(huì)是什么時(shí)候呢?這將是我下篇文章要預(yù)測(cè)的內(nèi)容,我現(xiàn)在可不敢亂說,我現(xiàn)在考慮的是,是不是要自詡“ jbpm3 工作流引擎在國(guó)內(nèi)的主要推廣者”,呵呵。


          轉(zhuǎn)自:http://blog.csdn.net/hongbo781202/archive/2005/02/28/304751.aspx

          posted on 2008-08-06 11:11 duansky 閱讀(263) 評(píng)論(0)  編輯  收藏 所屬分類: Workflow


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 五寨县| 桃源县| 香港| 左权县| 固阳县| 五莲县| 达尔| 乌鲁木齐市| 长汀县| 洞口县| 海淀区| 任丘市| 东乌珠穆沁旗| 陆良县| 阿克| 沙雅县| 遂溪县| 多伦县| 望都县| 福贡县| 湖北省| 宁城县| 湄潭县| 密山市| 桑日县| 沁源县| 蓬安县| 鹤岗市| 湘潭县| 台南县| 遂平县| 左云县| 集贤县| 辉县市| 大新县| 镇安县| 商洛市| 高雄市| 台东市| 通海县| 德江县|