务流程处理等等。
? 其他具有流程特征的业务:包括质量管理、风险管理、贸易公司的报关
处理等业务。
根据《2012年度中国OA软件市场分析报告》和《2012年度中国ERP软件市场分析报告》,2012年中国的OA软件市场取得了35%以上的复合增长率,OA市场总额已经突破百亿元大关[9]。工作流管理软件作为OA系统和ERP系统中的重要组成部分,其市场地位还未得到大多数人的重视。据分析,2012年国内独立工作流软件产品的市场份额大约在9千万到1.5亿元人民币之间,虽然目前这个数字还不大,但是增长率超过了OA软件和ERP软件市场。从以上的资料和分析我们可以得出,工作流管理软件因为其技术上的重要性和使用的广泛性,还有很大的市场空间有待我们发掘。
9
第三章 Activiti体系结构
3.1 Activiti介绍
Activiti是由JBPM的创建者Tom Baeyens推出的新一代开源工作流引擎软件,目前最新的是2013年三月份更新的Activiti 5.12版本[10]。Activiti吸收了JBPM的许多成功经验,并加入了一些新的技术和思想,旨在成为下一代的优秀BPM解决方案。Activiti完全遵循BPMN2.0规范,BPMN全称为 Business Process Model and Notation, 是由OMG组织维护的业务建模语言,被众多厂商支持。Activiti从一开始设计就充分考虑到了开发人员的需要,Activiti使用方便,既可以嵌入到应用系统中使用,也可以作为独立的应用部署。同时 Activiti 提供了很多 BPM 高级工具,其中还包括开发协作工具,使得开发人员、业务人员和运行维护人员能够更好的协同工作。
Activiti系统服务结构图如下:
图3.1 Activiti系统服务结构图
每个服务的含义如下:
RepositoryService: Activiti 需要使用一些定义文件,部署文件和支持数据 ( 例如 BPMN2.0 XML 文件,表单定义文件,流程定义图像文件等 )来定义不同版本的业务流程,这些文件都存储在 Activiti 内建的 Repository 中。Repository Service 提供了对 repository 的存取服务[11]。
RuntimeService:在 Activiti 系统当中,每次启动一个预定义流程的时候,都会生成新的流程对象实例,Runtime Service 负责对这些业务流程实例的管理。此外,它还提供了对流程部署,流程定义和流程实例的存取服务,以及流程启动、流程实例的查询、设置流程变量实例等功能。
10
TaskService:在Activiti 中业务流程定义的每一个执行节点都被称为任务(Task),在Task中可以完成业务流程的数据流转、节点的状态变更等等操作[12]。Task Service提供了对业务系统的任务和表单的设置功能,通过Task Service可以在运行时对任务进行查询、领取、完成、删除以及变量设置等操作。
IdentityService:在进行流程定义的时候,必须要为不同的任务指定特定的用户,Identity Service 提供了组和用户管理的功能,通过Identity Service 可以对用户进行分组管理,并为不同角色的用户分配任务。
ManagementService: Management Service 主要是Activiti系统管理员用来对Activiti系统进行管理和维护,一般不会在应用系统中用到,管理界面简洁但是功能强大,可以完成Activiti的各种参数设置,对Activiti性能进行优化。
HistoryService: History Service 用于获取正在运行或已经完成的流程实例的信息,与 Runtime Service 中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经进行了查询优化。
FormService: 业务流程一般都会关联特定的表单,让用户通过表单完成特定的任务才会有意义。通过FormService可以完成表单的设计,并把表单和任务相关联,最后把表单展现给用户,完成数据的流转和展示工作。
3.2 Activiti的结构
Activiti包含三种类型的组件,分别是专用工具(Dedicated Tools)、存储内容(Stored Content)、协作工具(Collaboration Tool)[13],组件之间的关系如下图所示:
图3.2 Activiti组成结构图
11
下面分别对这三类组件进行具体介绍:
(1)专用工具(Dedicated Tools)组件包括(内容管理)Alfresco、建模器(Activiti Modeler)、设计器(Activiti Designer(Eclipse plugin))、管理及监控(Activiti probe)、任务管理(Activiti Explorer)五个工具组件[14]。
Alfresco是由Alfresco公司推出的一款基于JAVA和FreeMarker优秀的开源企业内容管理系统,功能包括:文档管理、知识库管理、电子邮件管理、协同工作等等,Alfresco是目前使用最为广泛的企业内容管理平台之一。在2010年被InfoWorld评为最佳开源软件。Alfresco已经与Activiti进行深度集成,Activiti中的所以资源包括流程本身都是被Alfresco所管理。
Activiti提供了完全基于WEB浏览器的流程建模器,方便用户进行流程定义工作,流程建模器完全遵循BPMN2.0规范,用户还可以通过建模器进行流程定义文件的导入导出工作,流程建模器的底层是基于Signavio开发的。
Activiti Designer 是集成到Eclipse开发平台上的建模工具,它是一个标准的Eclipse插件,可以方便开发人员在Eclipse开发平台上进行建模开发。
Activiti probe是一个基于WEB的控制台,用来对流程引擎进行监控和管理。通过Activiti Probe,可以查看所有的流程定义信息,以及系统部署运行状态,甚至可以查询系统数据库表的记录,以及系统运行的日志信息等等。
(2)存储内容(Stored Content)组件包含文档仓库(Documents Repository)、模型仓库(Model Repository)、SVN仓库(SVN Repository)、MVN仓库(MVN Repository)、Activiti引擎(Activiti Engine)。
Activiti Engine是整个Activiti引擎的核心组件,它的作用是将流程定义文件,转为为可以运行的内存中的JAVA对象,以供运行时各个功能使用。Activiti Engine是目前第一个,也是唯一一个从建模到执行,完全遵循BPMN2.0规范的工作流引擎软件[16]。
ActivitiCycle是Activiti区别于其他工作流软件的创新之处,ActivitiCycle的提出是因为现代企业信息管理系统的建设一般需要业务人员、开发人员、系统维护人员的良好配合才能顺利完成,ActivitiCycle为不同角色的人员提供了不同的工作区,帮助他们进行文件管理和信息交互。
3.3 Activiti的特点
Activiti 引擎是目前业内第一个,也是唯一一个从建模到执行,完全遵循BPMN2.0规范的工作流引擎软件。它基于流程虚拟机(PVM)进行构建,负责解析流程定义文件,将流程对象转化为内存中可以执行的JAVA对象,以供其他业务调用。它可以直接运行原生的BPMN2.0规范格式的工作流定义文件,这也
12
是我们选用Acitivi作为学习研究的对象的原因。
Activiti 引擎具有三个十分重要的特性:
(1)事件监听器的应用。Activiti 引擎采用事件的方式类接收消息触发事件执行,开发人员只需要关心自己的业务实现,而完全不用关心工作流的底层实现方式,把业务和工作流之间的耦合度降到最低。
(2)提供了定制活动的能力。对于大多数的商业工作流引擎来说,活动类型都是已经定义好的不可更改的,而Activiti引擎提供了定制活动类型的能力,在某些特殊情景下,开发人员可以根据需要自定义活动类型,用来实现业务人员所描述的复杂行为,这个功能应该是相当实用而又重要的。
(3)对复杂BPMN规范的简写。BPMN规范本身体系庞大,结构复杂,完全采用BPMN规范描述的流程文件难以看懂,对于大多数开发人员来说,这是一个不小的挑战。Activiti提供了比BPMN更为简单紧凑的XML格式来描述BPMN中的某些规范和术语,同时Activiti XML又可以转换为等效的BPMN XML。这就相当于Hibernate框架提供的HSQL一样,简明易用,大大减轻了开发人员的工作量。
根据国外开源网站统计,2012年Activiti在开源工作流引擎中的下载量仅次于JBPM,而且增长速度迅猛,大有赶超JBPM的趋势。那么作为开源工作流引擎家族的新兴势力,它为什么有这么大的吸引力呢:
(1)开源工作流引擎,并提供了完善的文档和说明文件,降低了工作流的使用门槛以及使用成本。
(2)灵活的使用方式,适用于各种类型的系统和项目。Activiti既可以单独部署,也可以作为应用系统的一部分嵌入到我们的应用当中。
(3)提供了人性化的流程设计、运行管理监控界面。Activiti建模器(Activiti Modeler)用于业务人员进行流程设计,Activiti设计器(Activiti Designer(Eclipse plugin))方便开发人员在Eclipse平台中进行流程设计和开发,Activiti管理及监控(Activiti probe)和任务管理(Activiti Explorer)都提供了基于浏览器的界面对流程的运行进行管理和监控。
通过以上的分析我们可以知道,Activiti作为一款基于JAVA的开源工作流引擎软件,其设计理念先进,技术实现上有许多独到之处,有许多值得我们学习借鉴的地方。当然,Activti出现的时间还比较短,在工作流引擎大家族中属于后起之秀,其在实际应用中的表现还有待时间的检验。
13