教研视野下主流开源工作流引擎对比分析

2014-01-26 21:21马亚锋张玉扣
成才之路 2014年1期
关键词:工作流开源教研

马亚锋 张玉扣

摘 要:(目的)了解当前主流开源工作流引擎,对比各自特点,为进行工作流系统开发者提供一个客观的评价,提高学生综合能力。(方法)针对三个最为常用的引擎进行具体分析,分析各自的背景、架构、实现方法及优缺点。(结果)三大主流开源工作流引擎分别是shark、osworkflow和jbpm。shark靠的是Enhydra,osworkflow靠的是opensymphony,而jbpm靠的是jboss。(结论)osworkflow实现起来简单灵活,但是功能匮乏,数据维护较为复杂;shark的jawe图形化功能较强,但是表现一般;jbpm基于状态图,提供灵活的表达机制,学生学习起来容易上手。

关键词:教研;开源;工作流;shark;osworkflow;jbpm

工作流最早是在生产和办公领域中针对日常生活工作中固定有序的活动提出的一个概念,主要就是为了将一个工作分解成多个任务和角色,依据特定的规则来执行,针对这些任务对其进行监控,从而能够达到提高工作效率、有效合理地管理业务等目的。而所谓的工作流引擎,就是在工作流系统中为其提供各种不同信息的传递、角色分工等解决方案。由于工作流没有统一的规范,因此工作流引擎比较多,而且较杂,大家普遍应用得比较多的三种工作流引擎分别是shark、osworkflow和jbpm。下面,我们针对这三种引擎从它们的持久层、定义语言、稳定性和可维护性等多个方面进行对比,以期更多的读者对这三种引擎有一个全面、客观的认识,对他们的工作能有一些帮助。

一、主流工作流引擎简介

(1)Shark。Shark是一个完全基于WFMC和OMG规范的工作流引擎,使用 XPDL作为工作流定义语言。流程和活动的存储使用Enhydra DODS(一个开源OR映射工具)。ToolAgents可以用JavaScript、JDBC、EJB访问、纯 Java 类、Email调用等等。Shark的建模工具是jawe。Jawe是一种基于形式化的过程定义的建模工具,是Enhydra的一个开源产品,符合WMFC规则,提供了图形化的界面来进行流程绘制、属性添加等,能自动将流程定义转化为相应的能够被工作流引擎解释的过程定义文件。第一就是过程定义的图形化表示,第二就是将过程定义输出到xpdl,最后就是可以将有效的xpdl文件进行导入和图形化表示。Shark的内部调度机制比较简单,基本上是基于WfprocessImpl类的run算法,采用的是遍历循环的方式,效率较高、直观易懂,但是很难支持比较复杂的运行模型。

(2)Osworkflow。Osworkflow是纯java语言编写,开放源代码。它主要面向的用户群是具有一定技术背景的软件开发人员,用户可以根据自己的实际需求,用XML配置出完全符合自身业务逻辑的流程。OSWorkflow适用于任何Java平台,在企业ERP开发中得到了广泛的应用。Osworkflow最大的特点,就是其显著的灵活性和完全面向软件开发人员。

(3)jbpm。Jbpm采用jpdl来定义工作流。jPDL(JBoss jBPM Process Definition Language)是基于jBPM框架的流程定义语言之一。Jpdl采用图形化的流程定义,将每个任务定义为一个uml状态图,每个状态图均有起始状态、结束状态以及状态的转换。Jbpm还有一个特点,就是它采用Hibernate来进行数据库的管理。Hibernate是一个开源的映射框架,既可以在java客户端使用,也可以在web应用中使用,支持目前大部分的数据库。

二、三种工作流引擎对比

Shark的体系和功能最为复杂,遵循WfMC的XPDL标准。它有两个特点,一个就是 XPDL中的Activity基于UML活动图。活动图最大的优势就是容易进行分叉控制,即可以控制并发线程同时执行或顺序执行。另一个特点就是采用了泳道来控制工作流引擎中任务的产生,采用“模块化”思路,容易扩展。OSWorkflow也是一款非常灵活、定位低级别的工作流引擎框架。OSWorkflow在国内项目用的较多,很多简易审批流程项目都是基于此。OSWorkflow在可视化流程定义工具大行其道的今天,逆流而行,反对可视化定义工具的使用,它希望用户靠XML去手动写流程,这点我很难理解。同时,持久化配置方式不唯一,差别比较大。有内存方式、JDBC方式、SpringHibernate联合方式、JDBCTemplate方式、Hibernate方式。

本人觉得,同学们如果想要学习Spring的源码的话,不妨先看看JBPM的Bean管理模块,这样能非常容易理解 Spring的核心代码,但却比直接看Spring源码简单了许多。JBPM完全使用Hibernate作为持久化工具,并不强制大家一定只能在JBOSS上使用jbpm,TOMCAT上也能跑。我想,这个工作流引擎既然是 JBOSS主推的,而且很多开源项目上也采用它来做底层组件,那么它的未来一定很光明。

参考文献:

[1]百度百科.osworkflow[DB/OL].http://baike.baidu.com/view/

674080.htm.

[2]百度百科.jbpm[DB/OL].http://baike.baidu.com/view/10875

11.htm.

[3]王海军,樊留群,杨力锋.等.基于Shark的工作流流程的实现

方式研究[J].机械工程与自动化,2005(4).

猜你喜欢
工作流开源教研
研学农谷 产教研学
五毛钱能买多少头牛
工作流在电力生产管理信息系统中的设计和应用
An Analysis of Li’s Prose The Great Goal with Gee’s “the Seven Building Tasks”〔*〕
工作流技术在医疗信息整合工程中的应用分析
基于工作流的水运应急信息管理平台设计 
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
开源计算机辅助翻译工具研究
新型教研——说题的感悟