好久沒有去看shark項目的進展了,說起來有些慚愧上次去enhydra.org網(wǎng)站應(yīng)該還是四年前的事情了,shark 1.x版本一直覺得夠用了,也就不再留意它的進展了。也一直未做過什么對外的文檔與代碼貢獻,鄙視一下。今天來看看網(wǎng)站上對shark的描述,提些自己的看法與應(yīng)用認識。
Shark與JaWE是Enhydra基于LGPL授權(quán)協(xié)議下提供的一組開源工作流軟件。打個比方就類似于JasperReport與iReport的兩者的關(guān)系。Shark提供完整的工作流引擎,JaWE是一個工作流程設(shè)計器與調(diào)試環(huán)境。
以我使用的經(jīng)驗來說,Shark是一個嚴格遵守WFMC標(biāo)準的,使用XPDL語言進行描述的引擎。Shark可以應(yīng)用在多種J2EE容器下支持會話Bean與Corba方式調(diào)用及WEB服務(wù)調(diào)用。
初學(xué)者很容易被這些開源項目中大量的概念與術(shù)語嚇住,基本上都是死在第一步上的,無法入手。以我的經(jīng)驗來說,先了解WFMC標(biāo)準與XPDL語言標(biāo)簽的含義,你有個基本的概念頭認識后,然后用JaWE模仿示例做幾個你常用的小流程,調(diào)試跑起來,你立即就會被它吸引上而不斷去嘗試它博大精深的內(nèi)容。
當(dāng)然,很多人又會跳出來說Shark不好,它是基于自己的框架開發(fā)的,并未使用struts/spring+hibernate這些更大眾化的框架來做,它有自己的DODS等技術(shù),學(xué)習(xí)曲線與成本很高。好象OFBiz不被大家接收也是這個原因(它有自己的OR技術(shù)與Framework)關(guān)于這點我的看法是,如果你是應(yīng)付一些簡單項目業(yè)務(wù)需求,是無需套用象OFBiz或Shark這些面向企業(yè)業(yè)務(wù)應(yīng)用的框架,這叫用高射炮打蚊子。簡單的信息CRUD自己隨便找個框架或是原來的代碼拷貝修改一下就可以了。不要天天比較說這個業(yè)務(wù)框架不好,那個技術(shù)不夠開放。要知道這些項目都是這些開源組織多年持續(xù)堅持不斷積累的沉淀,那時哪有這么多成熟的技術(shù)框架呀?而且我覺得客戶或是作為技術(shù)負責(zé)人來說,只有最適合的,沒有說一定要什么技術(shù)框架?啥叫主流?啥叫未來方向?扯淡多過實際,再過兩三年現(xiàn)在所謂的主流框架還真的是主流嗎?
shark在不同的人手中應(yīng)該是可以有不同的用法,我是把它獨立做為一個組件來應(yīng)用的,使用需要用到工作流程驅(qū)動的應(yīng)用我會使用到它。通過JaWE根據(jù)業(yè)務(wù)需求設(shè)計XPDL文件存放至資源庫中,把流程結(jié)束點需觸發(fā)的應(yīng)用做成外部應(yīng)用在工作流程中加以定義(支持Beanshell/WebService多種方式),類似于JspClient的示例方式在你自己的頁面中提供待辦事宜、工作申報、審批等操作。當(dāng)然最主要的集成工作就是組織結(jié)構(gòu)與權(quán)限的融合。這樣你的業(yè)務(wù)系統(tǒng)就可以同shark全面融合了。最棒的情況下就是多個業(yè)務(wù)系統(tǒng)通過shark的同一實例串接起來,實現(xiàn)不同業(yè)務(wù)系統(tǒng)的工作銜接。
說得有些粗糙,可能文筆比較差,也不知別人是否能明白。以后有機會再就某個主題來說吧。
本人原創(chuàng)文章,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處!