时下的新新人类看到我,一定会认为在下是个十足的老古董,这不,《功夫》这样的片子我到今年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工作流引擎在国内的主要推广者”,呵呵。
相关推荐
开源工作流引擎的比较 开源工作流引擎是指使用开源许可证的工作流引擎,它们通常具有灵活、可扩展、可定制等特点。目前市场上有多种开源工作流引擎,下面我们将比较其中几种流行的开源工作流引擎。 1. JBPM JBPM...
工作流引擎平台解决方案由三个主要组成部分组成:模型定义工具、工作流引擎和客户端应用。模型定义工具提供图形化的过程定义工具,而工作流引擎则实现了工作流的后台驱动。后台工作流引擎以COM组件方式实现,为应用...
工作流引擎是一种软件系统,它负责管理和自动化组织内的业务流程。在C#中编写工作流引擎,可以利用.NET Framework或.NET Core提供的丰富的类库和工具,实现高度灵活和可扩展的流程控制。本文将深入探讨C#实现工作流...
Java平台上的工作流引擎在企业级应用中扮演着至关重要的角色,它们帮助企业自动化业务流程,提高效率。本文将深入分析四个主流的开源工作流引擎:Shark、osworkflow、jbpm和jflow。 首先,Shark是Enhydra项目的一...
JsonFlow工作流基于自研的流程设计器 + 自研后端Java工作流引擎,组成了一套纯JSON数据交互的自研工作流引擎系统 + 工作流管理系统。本系统无论前端还是后端,其学习成本明显低于开源工作流引擎及附带流程设计器,...
工作流引擎需要能够处理大规模用户和复杂流程,同时适应组织结构和流程模式的变化。这包括处理能力和流程设置的灵活性。 **扩展性**是确保工作流引擎能够适应未来需求的重要因素。除了内置的特殊权限功能,如交接、...
三、自研工作流引擎 工作流引擎是业务流程自动化的核心,本平台采用自研引擎,实现了灵活的流程定义和执行。工作流引擎支持创建、修改、终止等多种流程操作,可以根据业务需求设计复杂的审批流程。此外,自研引擎...
工作流引擎是软件系统中用于自动化业务流程的关键组件,它能够根据预定义的规则和步骤协调应用程序中的任务和活动。在C#编程语言中,工作流引擎提供了强大的工具和技术来设计、执行和管理复杂的业务流程。本文将深入...
工作流管理系统(Workflow Management System, WfMS)是实现工作流的关键,它通常包括工作流引擎,用于解析和执行工作流定义,以及用户界面,供用户交互和管理流程。工作流引擎是工作流系统的心脏,它根据预定义的...
2. **流程实例管理** - 引擎能够创建、暂停、恢复和结束工作流实例,同时跟踪每个实例的状态和历史记录。 3. **任务管理** - 提供了任务队列和任务分配机制,可以按照预设规则将任务分派给相应的用户或角色。 4. *...
工作流引擎设计说明书深入解析了工作流引擎的核心架构与关键组件,旨在构建一个高效、灵活且可扩展的流程管理平台。以下是对该说明书中的关键知识点的详细解释。 ### 工作流引擎概述 #### 文档目的 《设计说明书》...
在这个话题中,我们将探讨工作流引擎的选择,特别是对比jBPM3与其他更现代的工作流引擎,如jBPM4、jBPM5和Activiti5。 jBPM3是一个较早的工作流引擎,但它使用的是自定义的jPDL流程描述语言,而非标准的XPDL、BPEL...
工作流引擎是软件系统中用于自动化业务流程的关键组件,它允许开发者定义、执行和管理复杂的业务逻辑。在C#中,工作流引擎可以利用.NET Framework的工作流服务(Windows Workflow Foundation,WF)来实现。本实例...
SpiffWorkflow是一个用Python编写的强大工作流引擎,它允许开发者以Python、XML或JSON的形式定义工作流模型,这极大地增强了灵活性和可扩展性。 1. **Python支持** Python是SpiffWorkflow的核心编程语言,它以其...
### 工作流引擎详细设计知识点 #### 一、引言与编写目的 工作流引擎是一种用于自动化业务流程管理的软件系统,它基于预设的流程模型,通过控制信息的流动来协调各种业务活动的执行顺序。《工作流引擎详细设计说明...
- **流程版本管理**:EOS工作流引擎支持流程的版本控制,包括分水岭型、一刀切型和特事特办型三种策略,以及流程版本的发布管理。 ### 结论 EOS工作流引擎的设计与实现展示了其在企业级应用中的强大潜力,通过高度...
驰骋工作流引擎,简称ccflow,是一款强大的开源工作流管理系统,专为各类组织和企业设计,用于自动化和优化业务流程。它集成了智能流程引擎,使得流程设计、执行和监控更加灵活高效。 首先,从整体解决方案的角度看...
### 工作流引擎对比分析 #### 一、引言 随着企业数字化转型的深入发展,业务流程自动化的需求日益增长。工作流引擎作为实现业务流程自动化的关键组件,在软件开发和企业管理中扮演着越来越重要的角色。本文将对六...
普元工作流 API javadoc(详细的api chm文档)