三大主流工作流引擎技术分析与市场预测
1. 从《功夫》说起
时下的新新人类看到我,一定会认为在下是个十足的老古董,这不,《功夫》这样的片子我到今年 2 月底才看。不过看过《功夫》,我想的一定比一般的人多:周星星浪迹江湖,和他胖子大哥出去敲竹杆时,为什么要他大哥胸前画两把斧头?找个假靠山呗!装是斧头帮的人才不会被人欺负啊。
这让我想到年前的一则新闻: jbpm joins jboss and becomes jboss-jbpm 。也就是说了, jbpm 找了个靠山 jboss ,以后不用自己在外流浪了。
好,我们转入正题,谈这里说的三大主流开源工作流引擎: Shark,osworkflow,jbpm 。
Shark 的靠山是 Enhydra 。 Enhydra 做过什么呢?多了!从 j2ee 应用服务器,到 o/r mapping 工具,到这个工作流引擎等等。为什么 Shark 的持久层采用 DODS 来实现?就是因为他们是一家人。
Jbpm 的靠山是 jboss 。 Jbpm3 的持久层采用 hibernate3 来实现,也是因为这个原因吧。 Jbpm3 的图形化流程定义已经决定嵌入到 jboss eclipse IDE 中,大家看看 jboss eclipse IDE preview 1.5 版,我们已经可以用插件方式编辑一个 jbpm3 流程定义文件了。
Osworkflow 的靠山是 opensymphony 。我是非常喜欢这个组织的,它做出了很多的好东西。在开发工作流管理系统时,我就推荐用它的另外一个东西: webwork2 。笔者主持的开源工作流引擎 AgileFlow 就是基于 ww2+spring+hibernate 架构实现的。
完成本段时说句题外话:现在基本上所有的 J2EE 应用程序服务器都有自己的工作流引擎,如上面提到的 Enhydra,jboss 和没有提到的 websphere 和 weblogic 等,可见,学习工作流引擎技术的确是非常重要的。
2. 如来神掌
光有靠山是不行的,周星星加入了斧头帮还不是被邪神打扁了头?要救自己,还是要靠如来神掌。
Shark 的流程定义语言是 XPDL ,我们知道, XPDL 的两个最重要的概念是 Process 和 Activity 。 XPDL 中的 Activity 是基于 UML1.x 中的活动图的概念。活动图天生的适于工作流程建模,它相对于状态图的一个最大的优点是容易做并发线程的分叉控制,这些并发线程可以同时执行也可以顺序执行;它还有一个优点是有泳道的概念,可以控制工作流引擎中的任务的产生。 Shark 的如来神掌是活动图。
Osworkflow 的如来神掌又是什么呢?我们知道,它有个重要概念是 State…… 呵呵,我们知道了,它的如来神掌是 FSM 。不知道 FSM 是什么东西??那你读大学时肯定不是好学生;当然了,不知道也不打紧,你把他类似理解为状态图就可以了。 Osworkflow 中的 State 是由 step 和 status 联合表达的,一个 State 就是一个 step 中的某个 status ;而 state 的转换由 action 来驱动,类似状态图中的 event, 因为一个 event 对应一个 action 嘛。
Jbpm 的如来神掌就没有上面的简单了,它结合应用了状态图 + 活动图 +PetriNet 的知识,而且,这里的活动图还是 UML2.0 版的。 UML2.0 的活动图中,节点不叫活动( Activity )而叫动作 (action) ,活动成了一个高层次的概念,它包含一个动作序列。一个活动图展现一系列的动作,这些动作组成了活动。 Jbpm 把 action 也改名了,称为 state 。 Jbpm 使用的状态图的概念有 transition/event 等,这个自己去看吧。 Jbpm 来内部实现中还采用了 PetriNet 的概念,如 token,signal 等。什么?又不知道 PetriNet 什么东东?那你大学是学计算机的吗?不是?那你可能是学文科的,学机械 / 电气 / 土木工程 / 交通运输等专业都有接触 PetriNet 的课程,如果没有学过,还是看看 jbpm 吧,反正我们也不搞理论,知道大致概念就行。
3. 市场预测
做预测是件吃力不讨好的事情,好多国外的大师做的预测也是被人骂得 …… 幸亏我去年年中在《工作流之大局势》中做的预测还是基本正确。那时我的预测是: Shark…… 将登上头号宝座。应该说,在那篇文章发表前,国内的工作流引擎使用率最高的是 osworkflow; 到去年年底, Shark 就占有了明显的优势地位,我分析有如下原因:
1) 国内的企业都看中 XPDL ,因为这意味着在产品说明书中又可以吹牛说“我们遵循 WFMC…… ”
2) 因为我自诩“ Shark 工作流引擎在国内的主要推广者”,大部分给我反馈工作流管理系统开发选用技术的朋友都是用的 Shark
3) Shark 的确是一套不错的工作流引擎,就算你只是想学习 XPDL ,你也可以从学习 Shark 开始
现在已经到了《工作流之大局势》中说的从封建社会向资本主义转型的时代,而驱动这一转型的,不是别人,正是上面说的 jbpm 。 Jbpm3 将在 3 月发布阿尔发版, jbpm3 的最终版将支持 bpel4ws 的核心部分。所以,我估计, Shark 将在引领风骚数百天后,被 jbpm3 赶下第一宝座。笔者的开源敏捷工作流开发框架 AgileFlow 将整合 jbpm3 ,同时对 agile 引擎和 jbpm3 引擎提供支持。
但 bpel4ws 真的就和我们这么快的亲密接触了吗?没有。我估计在今年它是不会真正走进我们的生活的,那会是什么时候呢?这将是我下篇文章要预测的内容,我现在可不敢乱说,我现在考虑的是,是不是要自诩“ jbpm3 工作流引擎在国内的主要推广者”,呵呵。
转自:http://blog.csdn.net/hongbo781202/archive/2005/02/28/304751.aspx