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