http://www.infoq.com/cn/articles/rh-jbpm5-activiti5/

作者 荣浩 发布于 2010年12月28日 | 注意:GTLC全球技术领导力峰会,500+CTO技聚重新定义技术领导力!11 讨论

 

jBPM来说,今年最大的事件莫过于jBPM的创建者Tom Baeyens离开JBoss了。Tom Baeyens离开的具体原因尚不清楚,但他的离开产生了两个结果:一是jBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过;二是Tom Baeyens加入Alfresco后很快推出了新的基于jBPM4的开源工作流系统Activiti。由此不难推测Tom Baeyens离开的部分原因:JBoss内部对jBPM未来版本的架构实现产生了严重的意见分歧。更加巧合的是12月1日Activiti5刚发布,紧接着12月2日jBPM5就发布了第一个候选发布版本,jBPM与Activiti之间的微妙关系可见一般。

在这篇文章里,我们将一起回顾jBPM从jBPM3到jBPM5以及Activiti5的发展历程,我们可以清晰的看见jBPM(包括Activiti)设计所遵循的一致原则:强调流程服务的可嵌入性和可扩展性。同时,从各个版本之间的变化我们也能看见产品设计思路的变化:更加强调面向业务人员,增加BPMS(业务流程管理系统)特性。

在回顾之前,我们首先讨论一下BPMS应该嵌入还是独立部署的问题,因为不管是jBPM还是Activiti,都强调了流程服务的可嵌入性。此外,我们还需要讨论一下什么是BPMS的特性,它们所解决的问题是什么。

 

一、嵌入式还是独立部署?

不管是jBPM还是Activiti,都强调了流程服务的可嵌入性。Tom Baeyens在其个人博客里称作为独立部署的BPMS已死,原因有两个:一是独立部署的BPMS需要很高的安装使用成本,需要独立部署、需要用户支出大量的培训成本和维护成本;二是独立部署的BPMS与外部系统的交互方式是分布式,这使得很多问题变得复杂,例如分布式事务。Tom Baeyens代表了相当一部分人特别是开发人员的观点。

Tom Baeyens没有完全理解BPMS。什么是BPMS?BPMS最重要的目标就是需要打破各个应用系统(CRM、ECM、ERP、SCM)之间的界线,将分散在这些系统中的流程集中管理,这是BPMS的实质。一如流程再造,打破各个部门之间的壁垒,减少浪费,建立流程驱动性的组织。如下图1所示:

 

图 1:BPMS打破应用系统之间的界线

BPMS所要解决的问题要求其必然是独立部署的。Tom Baeyens错误的根本原因在于其将BPMS与工作流系统的定义混为了一谈,他如此定义BPMS:BPMS旨在简化对组织核心流程进行支撑的软件创建。也就是BPMS面向的是软件开发人员,旨在简化他们的开发,降低他们使用流程的门槛。而这正是工作流系统需要解决的问题。

BPMS面向企业用户,工作流面向开发社区和系统集成商。

二、BPMS特性

jBPM4、jBPM5和Activiti5都增加了其BPMS特性,那些特性能够称为BPMS特性呢?我们先看一看BPMS需要解决的问题,为解决这些问题所增加的特性就是BPMS特性。

  1. 如何设计流程,在组织中高效地对设计出的流程进行沟通,取得共识?

    • 提供跨越组织的流程标准标记符号与术语(BPMN已经成为标准)
    • 流程及相关文档的可视化(流程/内容存储仓库)
    • 提供在组织结构内进行不同层次之间的流程导航(流程存储仓库支持组织模型)
    • 流程定义在各个层次/部门间的一致性,避免业务人员的流程建模转换到IT系统时受到损耗(流程引擎支持基于图的建模,支持扩展)
  2. 如何更好地执行流程?

    • 业务活动的实时监控,预警与控制(BAM)
    • 流程执行的仿真
    • 流程执行的统计分析与反馈(报表)
  3. 如何更好地管理流程?
    • 打破各个应用系统之间的界线,统一管理所有流程(EAI,与ESB的集成)
    • 对业务人员友好的建模工具
  4. 如何在执行流程过程中遵循业内最佳实践和规则?
    • 面向流程的知识管理
    • 规则引擎

三、完整的工作流实现jBPM3

jBPM3的最新版本是3.2.7,其包括了以下组件:基于Eclipse的流程设计器、用于监控案例(流程实例)和处理任务的Web控制台以及jPDL核心库。如下图2所示:

图 2:jBPM3组件

    1. 基于Eclipse的流程设计器

      提供给开发人员绘制jPDL流程图,因为该设计器基于Eclipse,所以生成的流程文件可以与开发代码一起组织管理,非常容易进行单元测试。实现了工作流管理系统参考模型里的接口1。

    2. Web管理控制台

      主要有两个功能:一是作为工作流客户端应用接口,给用户提供一种手段,以处理案例运行过程中需要人工处理的任务;二是对案例的状态进行监控与管理。实现了工作流管理系统参考模型里的接口2和5。

    3. jPDL核心库

      jPDL核心库是一个单独的JAR包,可以嵌入到目标应用中执行,它包括了:

      • 流程仓库:解析jPDL流程定义文件并存储读取;
      • 流程引擎:对流程定义进行初始化和调度执行,节点的运行期行为与jPDL里定义的节点类型一一绑定;
      • 任务管理:生成任务节点所对应的工作项,管理工作项的生命周期(初始化、分配执行者、执行、挂起、结束、终止);
      • 事件管理:发布案例和任务的开始、结束事件,通过监听者模式调用相应的事件处理器;
      • 异步执行机制:通过线程实现了Job Executor,进行异步工作的处理,这些工作包括了时间处理、异步动作。
      • 身份组件模型:实现了一套简单的身份组件模型,包括了组、用户和权限。

      通过调用自定义Java代码实现了对外部应用的调用,从而实现工作流管理系统参考模型里的接口3。

jBPM3是一个轻量级的嵌入式工作流系统。它在Java社区的成功得益于两个方面:一是嵌入式,这降低了使用工作流的门槛;二是对开发人员友好,这表现在易读的jPDL、流程的可测试性(Eclipse插件)以及节点行为的可扩展性,我们可以非常容易的在流程运行中加入自己定制的行为(通过事件处理器和Action)。jBPM3面向开发人员,它解决的问题是流程的自动化,它的影响力集中在Java开发社区,是一个完整的工作流系统实现。

纵观jBPM:从jBPM3到jBPM5以及Activiti5的更多相关文章

  1. 纵观 jBPM:从 jBPM3 到 jBPM5 以及 Activiti5

    https://www.infoq.cn/article/rh-jbpm5-activiti5# 对jBPM来说,今年最大的事件莫过于 jBPM 的创建者Tom Baeyens离开 JBoss 了.T ...

  2. jBPM5 vs Actitivi

    http://www.blogways.net/blog/2013/07/16/activiti-jbpm-compare.html jBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baey ...

  3. 工作流引擎Activiti使用总结

    http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html 1.简单介工作流引擎与Activiti 对于工作流引擎的 ...

  4. Activiti工作流引擎使用

    http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html 1.简单介工作流引擎与Activiti 对于工作流引擎的 ...

  5. 工作流引擎Activiti使用总结(转)

    1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时候主要任务就是开发OA系统,当然基本都是有工作流的支持,不过当时使用 ...

  6. jbpm3.2中jbpm.jpdl.mysql.sql文件运行报错的问题

    这是一个很久之前遇到的问题,就是用从官网下下载的jbpm组件,它的jbpm.jpdl.mysql.sql不能正常运行.其原因是该sql文件中有一句语句有错误.现在附上正确的jbpm.jpdl.mysq ...

  7. BPMN2新规范与Activiti5

    上世纪九十年代以后,随着WfMC联盟的成立,BPM市场群雄逐鹿如火如荼,工作流技术得到了突飞猛进的发展,其中IBM.Oracle等大型软件厂商在工作流领域各扯大旗割据一方.2011年BPMN2.0新规 ...

  8. jbpm 6 vs activities 5评估(持续更新、亲测实际项目评估)

    最近我们有个使用了jbpm 6.2(6.2是一个较大的里程碑)的批处理模块,因为大BOSS一直觉得太重了,希望有更加轻量级的解决方案,因为我们基本上没有真正意义上流程的概念,只有静态的流程图,因为一直 ...

  9. 开源流程引擎osworkflow、jbpm、activiti、flowable、camunda哪个好?

    市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.其中:Jbpm4.Activiti.Flowable.camunda四个框架同宗同源, ...

随机推荐

  1. [No0000AD]7z源码完全移植至Visual Studio 2015

    今天在上次的基础上(原文地址:[No0000AB]用Visual Studio 2015在 WIN10 64bit 上编译7-zip (32 bit)),将7Z的源码完全移植到了vs2015开发环境下 ...

  2. 如何给SVG填充和描边应用线性渐变

    给SVG元素应用填充和描边有三种方法(戳这里学习SVG填充和描边的相关内容).你可以使用纯色.图案或渐变.前面两种方法我们之前已经讲过了,现在我们来讨论第三种方法——渐变. SVG提供了两种渐变——线 ...

  3. ASP.NET Core MVC 在linux上的创建及发布

    前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们搭建的Asp.net core项目之后,自己也是跃跃欲 ...

  4. ASP.NET WEB API 帮助文档引用单独项目中的DTO,见面上不显示字段注释问题解决办法

    StackOverFlow上的解决办法: 问题地址

  5. Spring_跨项目读取properties文件

    应用背景:工程中有40~50个项目,分为4个模块,分别是核心模块.服务接口模块.服务实现模块.Web模块.其它模块(包括消息队列.quartz任务等).工程中很多配置项都是多个项目共有调用的,所以单独 ...

  6. WATERHAMMER: A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION

    开启阅读模式 WATERHAMMER A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION Waterhammer is an impact load that is ...

  7. java 在循环中删除数组元素

    在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayL ...

  8. web主题公园版权信息破解:script.js加密文件

    很多人会使用web主题公园网站的免费worldpress主题,但它的主题又都被加了版权信息,故意让人找不到版权信息的修改位置. 你如果去footer.php里面删除版权信息(技术支持:web主题公园) ...

  9. checkbox做全选按钮

    1.先写一个html页面,里面写一个全选按钮和几个复选框,实现下面2个要求 (1)点击全选按钮选中时,所有的复选框选中. (2)点击全选按钮取消选中时,所有复选框取消选中. <input typ ...

  10. 服务器端之间采用http接口调数据时的Cookie传值问题

    public static string UrlGet(string url) { string responseContent = ""; string cookieValue ...