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