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/