Tom Baeyens也就是jBPM的原作者,離開了Red Hat之后,另起爐灶搞了一個Activiti的項目,這個項目是基于BPMN的原生流程引擎。
那么這個activiti到底有啥好處呢?讓咱們一一道來:
它基于的Apache 2.0開源協(xié)議,比jBPM的LGPL更加寬松。
它是基于BPMN2.0標(biāo)準(zhǔn)規(guī)范的,最大的好處就是可以用oryz這個web流程設(shè)計器直接在web瀏覽器上設(shè)計流程了。(注:別高興太早,oryz是用svg寫的,IE一律不支持。)
它是基于ibatis的,數(shù)據(jù)庫層不再對hibernate有依賴。(注:alpha1只支持h2database,后面的版本會對mysql, oracle,postegl進行支持)
選用BPMN作為標(biāo)準(zhǔn)流程語言,也意味著原來的jBPM里的jPDL流程語言將不會被繼續(xù)支持,也不知道PVM流程虛擬機是否會繼續(xù)下去,如果Tom不想
玩虛擬機了,activiti很可能就是一個只支持一種流程語言的引擎了。這點確實讓人感到有點兒遺憾。
從www.activiti.org這個網(wǎng)站上可以下載到alpha1的發(fā)布包,其中包含了源代碼,草草看了一下,核心庫只有200多K,其中把原來自行實現(xiàn)的IoC自動注入的代碼都刪掉了。以后的IoC工作可能統(tǒng)一交給spring去管理,這對使用spring的同志來說,無疑是一個天大的好消息。
api部分對外部接口進行了簡化,ExternalActivityBehaviour不見了,換成了EventActivityBehaviour,這一點讓我感覺很舒服,畢竟signal其實也只是事件的一種特例,換成eventActivityBehaviour之后,也就意味著我們可以讓活動節(jié)點支持更多事件處理操作了。
持久化部分換成了ibatis,這部分暫時還只支持h2database,腳本什么的也只有h2database的,雖然因為alpha1版本,功能不多情有可原,但是我還是擔(dān)心使用ibatis會否大幅度增加數(shù)據(jù)庫存儲部分的維護量。希望后續(xù)發(fā)展不要因為這部分的問題遇到障礙。
表結(jié)構(gòu)似乎和原來的jbpm4差不多,有些表名發(fā)生了變化。表的數(shù)目又少了很多,但是我情愿認(rèn)為這不是為了優(yōu)化,而是因為這個版本不成熟,因為看不到log和history相關(guān)的表,所以,現(xiàn)在這個版本應(yīng)該是沒有歷史留痕功能的。也沒有看到變量表,也許都是用二進制的方式來保存的吧?
對BPMN2支持的部分,目前支持StartEvent, EndEvent, Task和UserTask,其他的都不支持,所以還是需要時間完善的。
實際上Tom和Joram的編碼能力還是相當(dāng)驚人的,從他們倆離開Red Hat到現(xiàn)在才不過兩個月,就立刻搞出這么一個東西,而且網(wǎng)站也搞得有模有樣的,真心希望他們能延續(xù)RoadMap,把這個項目完善起來。
項目首頁:
http://www.activiti.org/