`
cui09
  • 浏览: 115377 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
最近访客 更多访客>>
社区版块
存档分类
最新评论

三大工作流引擎对比(转载)

阅读更多

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工作流引擎在国内的主要推广者”,呵呵。

分享到:
评论

相关推荐

    jbpm和shark工作流引擎对比.doc

    jbpm和shark工作流引擎对比 本文对jbpm和shark工作流引擎进行了深入的比较,涵盖了稳定性、易用性、灵活性、可监管性、扩展性和可维护性等多方面。工作流引擎是企业信息化建设中非常重要的一环,选择合适的工作流...

    Java四大主流开源工作流引擎分析Shark,osworkflow,jbpm,jflow

    Java平台上的工作流引擎在企业级应用中扮演着至关重要的角色,它们帮助企业自动化业务流程,提高效率。本文将深入分析四个主流的开源工作流引擎:Shark、osworkflow、jbpm和jflow。 首先,Shark是Enhydra项目的一...

    工作流引擎原理EOS工作流引擎工作原理

    工作流引擎是现代企业信息化系统中的重要组成部分,它负责自动化执行一系列业务流程,使得复杂的业务逻辑得以顺畅运行。本文将详细探讨EOS工作流引擎的工作原理,包括其核心调度算法、事件类型、事件调度机制以及...

    c#编写的工作流引擎

    工作流引擎是一种软件系统,它负责管理和自动化组织内的业务流程。在C#中编写工作流引擎,可以利用.NET Framework或.NET Core提供的丰富的类库和工具,实现高度灵活和可扩展的流程控制。本文将深入探讨C#实现工作流...

    php工作流引擎,可视化设计,兼容PHP8

    可视化设计是现代工作流引擎的一大亮点,它通过图形界面让用户直观地构建和修改工作流。在PHP工作流引擎中,开发者可以利用拖放方式创建节点、连接线,定义流程走向,使得非技术人员也能参与流程设计。这种设计方式...

    基于关系数据库的工作流引擎设计与实现

    ### 基于关系数据库的工作流引擎设计与实现 #### 引言 随着信息技术的发展,工作流管理系统(Workflow Management System, WfMS)已经成为优化业务流程的重要工具之一。工作流是指一系列相互关联的活动,这些活动...

    工作流引擎详解

    ### 三、JBPM工作流引擎案例分析——请假流程管理 #### 1. 流程定义 以请假流程为例,工作流引擎通过图形化界面或脚本语言定义请假申请、审批、反馈等环节,形成一个完整的流程模型。这个模型不仅包含各环节的顺序...

    开源工作流引擎Asp.ne源码 表单引擎+流程引擎+权限控制

    开源工作流引擎Asp.net源码是开发人员用于构建企业级业务系统的重要工具,它集成了表单引擎、流程引擎和权限控制等关键模块,旨在提高应用系统的灵活性、可扩展性和安全性。以下将详细阐述这些核心组件及其在实际...

    工作流引擎的设计与实现

    该联盟提出了一套工作流参考模型,该模型定义了工作流系统中的五个关键组成部分:工作流管理系统(Workflow Management System,WfMS)、工作流引擎(Workflow Engine)、工作流定义工具、工作流客户端应用以及工作...

    基于自研的流程设计器 + 自研后端Java工作流引擎,组成了一套纯JSON数据交互的自研工作流引擎系统 +工作流管理系统

    JsonFlow工作流基于自研的流程设计器 + 自研后端Java工作流引擎,组成了一套纯JSON数据交互的自研工作流引擎系统 + 工作流管理系统。本系统无论前端还是后端,其学习成本明显低于开源工作流引擎及附带流程设计器,...

    介绍一款工作流引擎设计思路

    工作流引擎需要能够处理大规模用户和复杂流程,同时适应组织结构和流程模式的变化。这包括处理能力和流程设置的灵活性。 **扩展性**是确保工作流引擎能够适应未来需求的重要因素。除了内置的特殊权限功能,如交接、...

    Activiti工作流引擎入门

    工作流引擎则为这种自动化提供了支持,比如Activiti,它能够处理复杂的审批流程,例如员工请假、出差审批等,极大地提高了工作效率。 2. Activiti工作流引擎特点: - Activiti使用BPMN2.0作为建模语言,使得流程...

    工作流及工作流引擎简介

    工作流管理系统(Workflow Management System, WfMS)是实现工作流的关键,它通常包括工作流引擎,用于解析和执行工作流定义,以及用户界面,供用户交互和管理流程。工作流引擎是工作流系统的心脏,它根据预定义的...

    PHP工作流引擎 phpworkflow

    2. **流程实例管理** - 引擎能够创建、暂停、恢复和结束工作流实例,同时跟踪每个实例的状态和历史记录。 3. **任务管理** - 提供了任务队列和任务分配机制,可以按照预设规则将任务分派给相应的用户或角色。 4. *...

    工作流引擎说明书

    工作流引擎设计说明书深入解析了工作流引擎的核心架构与关键组件,旨在构建一个高效、灵活且可扩展的流程管理平台。以下是对该说明书中的关键知识点的详细解释。 ### 工作流引擎概述 #### 文档目的 《设计说明书》...

    工作流引擎的选择

    在这个话题中,我们将探讨工作流引擎的选择,特别是对比jBPM3与其他更现代的工作流引擎,如jBPM4、jBPM5和Activiti5。 jBPM3是一个较早的工作流引擎,但它使用的是自定义的jPDL流程描述语言,而非标准的XPDL、BPEL...

    C# 工作流引擎实例(初学者非常有用)

    工作流引擎是软件系统中用于自动化业务流程的关键组件,它允许开发者定义、执行和管理复杂的业务逻辑。在C#中,工作流引擎可以利用.NET Framework的工作流服务(Windows Workflow Foundation,WF)来实现。本实例...

    SpiffWorkflow-基于Python的工作流引擎

    SpiffWorkflow是一个用Python编写的强大工作流引擎,它允许开发者以Python、XML或JSON的形式定义工作流模型,这极大地增强了灵活性和可扩展性。 1. **Python支持** Python是SpiffWorkflow的核心编程语言,它以其...

Global site tag (gtag.js) - Google Analytics