JBPM与Activity分析

更新时间:2024-04-25 00:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1 概述

这里对现阶段市面上的几个主流工作流引擎进行对比,同时将其与FixFlow进行功能和各方面的对比。这里选定的目标是JBPM和Activit,现在两者最新稳定版本分别是JBPM5以及Activiti5。

同时这里会讲讲FixFlow这个国产工作流引擎,对于国内用户来说,使我们在几个国外工作流之外又有了更多的选择。我们可以看到国内的开源流程引擎也可以做到国际级的水平,同时还可以支持加签、会签、回退等这样的“中国式工作流”。

2 JBPM和Activiti对比

首先先看看JBPM5和Activiti5,这两者现在可以说是国内外最常见到的开源工作流引擎。如果总管两者的发展史会发现两者的奠基人都是来自于一个叫Tom Baeyens的人。所以就会发现JBPM系列和Activiti系列的风格方面有很多相似,而Activiti看起来更像是JBPM的后续发展。

2.1 从JBPM3到Activiti5

从架构层面上来看JBPM3的架构为:

从这张图可以很清晰的看出JBPM的技术架构,可以说作为一个工作流引擎应该有的成分:设计器、控制台、流程引擎、引擎数据库这几者已经明显的标注之上,在后续的各个工作流引擎中这种架构都没有颠覆性的变化。

这里我们来看一下JBPM5的架构

他引入了规则引擎Drools,规则引擎负责了整个流程引擎的运转,而知识仓库的存在。让面向流程的知识管理有了更直观的认识,事实上JBPM的代码操作几乎都是从知识库类开始的。

这张图很好的表现出了一个以BPMS为方向的流程产品应该是什么样的架

构模式。

如果说JBPM是产品经理的造物的话,那么Activiti就是技术人员的杰作,Activiti更多的精力是放在了技术架构的精妙。其易用性方面是JBPM难以比拟的。集成一个Activiti的难度要远低于JBPM,同时JBPM业务化的api体系也着实让技术人员有些头疼。

这张图就是Activiti的架构图,可以看出这张图与其说产品架构图,更有点像技术架构图。在产品层面上,其知识库的概念还没有完全突出出来。

所以说对两者来说,JBPM的产品架构很不错,而Activiti的技术架构比之要强。两者可以说各有所长,不过他们之间有一些已经确定的共识。两者其实都在往BPMS的方向前进。

2.2 优势与共同点

1.

? ? ?

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

提供跨越组织的流程标准标记符号与术语(BPMN已经成为标准) 流程及相关文档的可视化(流程/内容存储仓库)

提供在组织结构内进行不同层次之间的流程导航(流程存储仓库支

持组织模型)

?

流程定义在各个层次/部门间的一致性,避免业务人员的流程建模

转换到IT系统时受到损耗(流程引擎支持基于图的建模,支持扩展)

2.

? ? ?

如何更好地执行流程?

业务活动的实时监控,预警与控制(BAM) 流程执行的仿真

流程执行的统计分析与反馈(报表)

如何更好地管理流程?

?

3.

打破各个应用系统之间的界线,统一管理所有流程(EAI,与ESB

的集成)

?

对业务人员友好的建模工具

如何在执行流程过程中遵循业内最佳实践和规则?

4.

?

面向流程的知识管理

?

规则引擎

3 FixFlow

JBPM和Activiti如此强大,那么国内也有很多厂商已经在使用了,但是在实际项目里得到的统一结果可能就是“不咋地”。这很简单,因为相比起SSH这样的框架,工作流与业务更贴近,因此对其灵活度的要求就更高。更高的灵活度就意味着更多可定制化成分。因此比如我们想造一辆汽车,SSH可以给我们的可能是生产线、发动机这样成品式的组件,而JBPM和Activiti给我们的则是油漆铁板这样的原材料。其主要问题主要在:

3.1 JBPM和Activiti的中国化

JBPM和Activiti已经被国内大量程序员所了解并加入到所使用的项目中。这两者也是国内架构人员的座上宾。

但是在使用中真的如此顺利么?笔者也曾用过这两者,也和用过两者的同行做过一些交流。我们认为这两者对于国产使用实际效果不佳。尤其在面对中国工作流需求时,两者不但没有提高更多帮助,反而使用户感觉掣肘。

3.1.1 API复杂,学习曲线高

正是由于业务的高可变性,开源的工作流引擎必须提供更多的api以供使用。这种复杂的API使程序员上手非常困难,使用者与其是被自己的业务捆住不如说是被困在寻找各种API的路上。

3.1.2 沟通成本高,反馈困难

大型的开源工作流产品无一例外是由国外团队维护,与其沟通并非容易的问题。

3.1.3 从引擎到应用必须经过二次开发

国外的工作流引擎在使用前一定会有架构师进行本地封装,有些是根据特定应用进行的封装,有些事通用的封装。这里JBPM的封装难度就比较大,而Activiti则稍小,不过依然是一件比较痛苦的事情。

3.1.4 国内只拿到引擎,而没有学会BPMS架构

之前也说过BPM最大的客户价值在于BPMS,这些正是各大工作流引擎所追寻的目标所在。客户为何要用工作流,工作流能为其带来什么好处?工作流绝不仅仅是对项目开发减少维护难度,更多是为各种切片分析提供详细的数据基础。市面上虽然有一些分析类的产品

3.1.5 中国式工作流

国外工作流引擎最大的一个问题还是无法适应中国式工作流,加签、会签、任意节点退回等等中国特有的管理模式,使国外的工作流无法原生支持这些内容,必须要经过复杂的二次开发才能支持起来。

3.2 FixFlow能带来什么

FixFlow是FixTeam带来的一款开源工作流引擎,这款工作流引擎有以

下特点。FixTeam是方正国际旗下的BPMCS开发小组,其BPMCS开发平台以是国内极具影响力的主流开发平台。

FixFlow其技术架构上走的是Activiti路线,同时为了方便使用,采用了更符合程序员使用习惯的API体系。提供了完整的中文本地化支持,同时还支持了各种中国式工作流。该引擎源自方正国际的BPMCS开发平台,该项目已有大量项目在线稳定运行,保障了其运行效率和稳定性。其主要优势如下

3.2.1 数十年积淀,运行稳定

FixFlow流程引擎源自于BPMCS,BPMCS本身是一款已经发展数十年的开发平台。项目组人员把平台的流程引擎单独抽取出来成了FixFlow,他拥有BPMCS里所有的流程引擎功能。目前已有福田康明斯、世纪互联、邮政储蓄银行、华东勘测设计院等多加公司正在使用这款流程引擎。

3.2.2 优质的本地化支持

FixFlow现在在GIT Hub上存放源代码,使用者可以在上面提出自己的问题与bug。或者也可以加入QQ群152654373,同样可以获取最及时的交流帮助。

3.2.3 完整的BPMS支持

FixFlow不仅仅是一个简单的开源工作流引擎,对于企业级用户来说,可以以FixFlow为中心获取BI报表、业务活动监控BAM、开发平台等全方

位的支持。

3.2.4 BPMN2.0标准化

FixFlow是国内首家全面支持BPMN2.0的开源工作流引擎。任何标准化设计器设计出来的BPMN配置文件,都可以直接拷贝至FixFlow里直接使用

3.2.5 Groovy脚本语言

FixFlow是国内首家使用脚本语言作为核心的开源工作流引擎。这样其流程运转的维护难度大大降低。

3.2.6 插件式图形设计器

FixFlow所有的流程和所有流程配置都可以在设计器上完成。通过配置就可以完成所有的可配置项。

3.2.7 嵌入式工作流

JBPM和Activiti的创始人Tom Baeyens曾说过独立式工作流已死。确实,其因有两个:一是独立部署的BPMS需要很高的安装使用成本,需要独立部署、需要用户支出大量的培训成本和维护成本;二是独立部署的BPMS与外部系统的交互方式是分布式,这使得很多问题变得复杂,例如分布式事务。Tom Baeyens代表了相当一部分人特别是开发人员的观点。

该观点实际上有些片面,其实应该更深入理解里面的内容。准确来说BPMS应该分成两部分来看,一部分是工作流引擎,一部分是工作流知识库

和相关应用(BAM、BI)。Tom Baeyens提出的很多问题其实都是工作流引擎单独部署带来的,如果工作流引擎单独在外,那么所有的系统与其交互必然成本高昂,如果其他功能再有所问题则整套体系都显得脆弱不堪。可是如果每个系统各自为政,就会出现网状交织的系统部署情况,这种情况对于信息化后续发展来说无疑是一剂毒药。

所以该观点的准确理解是流程引擎嵌入化,流程引擎应该是嵌入到每个系统之中,这样对于程序开发人员来说无疑是福音。而流程的管理系统系统应该集中化,建立流程知识库,让知识库统一管理,做到集中化。同时多系统串联应该引入ESB,做到应用调用流程,流程调用ESB,然后ESB再去调用注册服务的应用这样的调用结构。

3.2.8 API简单易集成

嵌入式工作流引擎其优点就是可以集成到其他系统中,这个系统无论是已经开发完成的系统,还是架构中的系统都可以把引擎集中到里面。

该引起来自于开发平台,所以易用性是绝对有保障的,集成难度远低于各个开源工作流引擎。只要了解一些基本的Spring知识,就可以将其轻松完

成集成工作。

FixFlow所有的API都是来自于FixFlowShellProxy这个类作为调用起始。学习周期很短。

3.2.9 商业化支持

FixFlow也有其商业版,如果使用者希望得到企业级的技术支持,可以从方正国际获取到商业版的FixFlow以及相关支持。

4 总结

如果你现在正在使用JBPM或者Activiti,那么你应该已经感觉到这两款引擎所带来的好处与坏处。此时有了一个新的选择FixFlow,再架构新项目的时候可以再也不用为“中国式工作流”进行复杂的逻辑封装。

这里附上关于FixFlow的几个地址 GIT地址:https://github.com/fixteam 官网地址:https://github.com/fixteam 下载地址:https://github.com/fixteam

本文来源:https://www.bwwdw.com/article/w1gp.html

Top