时下的新新人类看到我,一定会认为在下是个十足的老古董,这不,《功夫》这样的片子我到今年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工作流引擎在国内的主要推广者”,呵呵。
相关推荐
工作流引擎是一种软件系统,它负责管理和自动化组织内的业务流程。在C#中编写工作流引擎,可以利用.NET Framework或.NET Core提供的丰富的类库和工具,实现高度灵活和可扩展的流程控制。本文将深入探讨C#实现工作流...
Java平台上的工作流引擎在企业级应用中扮演着至关重要的角色,它们帮助企业自动化业务流程,提高效率。本文将深入分析四个主流的开源工作流引擎:Shark、osworkflow、jbpm和jflow。 首先,Shark是Enhydra项目的一...
该联盟提出了一套工作流参考模型,该模型定义了工作流系统中的五个关键组成部分:工作流管理系统(Workflow Management System,WfMS)、工作流引擎(Workflow Engine)、工作流定义工具、工作流客户端应用以及工作...
工作流引擎是一种软件系统,它实现了工作流程自动化,使得企业或组织可以定义、执行和管理业务流程。在本文中,我们将深入探讨工作流引擎的概念、重要性以及如何使用工具进行工作流管理。我们还将通过阅读名为"jbpm...
工作流引擎需要能够处理大规模用户和复杂流程,同时适应组织结构和流程模式的变化。这包括处理能力和流程设置的灵活性。 **扩展性**是确保工作流引擎能够适应未来需求的重要因素。除了内置的特殊权限功能,如交接、...
工作流管理系统(Workflow Management System, WfMS)是实现工作流的关键,它通常包括工作流引擎,用于解析和执行工作流定义,以及用户界面,供用户交互和管理流程。工作流引擎是工作流系统的心脏,它根据预定义的...
工作流引擎设计说明书深入解析了工作流引擎的核心架构与关键组件,旨在构建一个高效、灵活且可扩展的流程管理平台。以下是对该说明书中的关键知识点的详细解释。 ### 工作流引擎概述 #### 文档目的 《设计说明书》...
在这个话题中,我们将探讨工作流引擎的选择,特别是对比jBPM3与其他更现代的工作流引擎,如jBPM4、jBPM5和Activiti5。 jBPM3是一个较早的工作流引擎,但它使用的是自定义的jPDL流程描述语言,而非标准的XPDL、BPEL...
最后,《小论工作流应用在国内的三大未来市场.pdf》可能展望了工作流技术在中国的潜在应用领域,如政府服务、医疗保健和智能制造等。 总的来说,这些参考资料为开发者提供了全面的视角,从工作流引擎的设计、实施到...
工作流引擎是软件系统中用于自动化业务流程的关键组件,它允许开发者定义、执行和管理复杂的业务逻辑。在C#中,工作流引擎可以利用.NET Framework的工作流服务(Windows Workflow Foundation,WF)来实现。本实例...
SpiffWorkflow是一个用Python编写的强大工作流引擎,它允许开发者以Python、XML或JSON的形式定义工作流模型,这极大地增强了灵活性和可扩展性。 1. **Python支持** Python是SpiffWorkflow的核心编程语言,它以其...
### 工作流引擎详细设计知识点 #### 一、引言与编写目的 工作流引擎是一种用于自动化业务流程管理的软件系统,它基于预设的流程模型,通过控制信息的流动来协调各种业务活动的执行顺序。《工作流引擎详细设计说明...
驰骋工作流引擎,简称ccflow,是一款强大的开源工作流管理系统,专为各类组织和企业设计,用于自动化和优化业务流程。它集成了智能流程引擎,使得流程设计、执行和监控更加灵活高效。 首先,从整体解决方案的角度看...
工作流引擎设计与分析是IT领域中一个关键的议题,特别是在现代企业管理和自动化流程中扮演着重要角色。工作流引擎的主要任务是根据预定义的流程规则来管理和推进工作流程实例,确保业务流程的正确执行。以下是对工作...
Snaker是一个基于Java的轻量级工作流引擎,适用于企业应用中常见的业务流程。本着轻量、简单、灵巧理念设计,定位于简单集成,多环境支持。snaker-core.jar大小208K,代码行数约7000行,强大的扩展支持,不依赖于...
最近项目中需要使用到工作流,然后上网搜到一个大神用Javascript写的一个工作流,感觉写的很屌。...我觉得代码很有学习参考价值,所以上传到这里,希望对大家有些帮助,里面附上html文件是Javascript写的工作流引擎!
在IT行业中,工作流引擎是一种用于自动化业务流程的软件系统,它可以帮助企业或组织实现流程的标准化、规范化和高效化。在PHP环境下开发工作流引擎,可以充分利用PHP的灵活性和强大的Web开发能力,为各种业务场景...
Snaker工作流引擎可以轻松地与Spring、Hibernate等主流Java框架集成,同时支持MyBatis、JPA等多种持久层技术,为开发者提供了极大的便利。 **7. 数据库独立** Snaker并不绑定特定的数据库,支持MySQL、Oracle、SQL...
在IT领域,工作流引擎是一种用于自动化业务流程的软件组件,它能够根据预定义的规则和逻辑来管理和驱动任务的执行。在这个“用C#开发的工作流引擎”项目中,我们将深入探讨C#编程语言如何被用来构建这样一个复杂的...
《驰骋工作流引擎白皮书》是一份详细介绍驰骋工作流引擎V4.0特性和优势的专业文档,由济南驰骋软件开发有限责任公司编撰。该白皮书旨在为读者提供深入理解工作流引擎以及驰骋工作流产品的工作原理、应用场景和核心...