目录
Activiti简介
Activiti是一个针对企业用户、开发人员、系统管理员的轻量级工作流业务管理平台,其核心是使用Java开发的快速、稳定的BPMN日2.0流程引擎。Activiti是在ApacheV:2许可下发布的,可以运行在任何类型的Java程序中,例如服务器、集群、云服务等。Activiti可以完美地与Spring集成。同时,基于简约思想的设计使Activiti非常轻量级。
1、工作流基础
1.1、BPM
BPM是Business Process Management的缩写,中文含义是业务流程管理,是一套达成企业各种业务环节整合的全面管理模式。BPM是为了实现一定的经营目的而执行的一系列逻辑相关的活动的集合。业务流程的输出是满足市场需要的产品或服务。根据功能、管理范围等的不同,企业流程管理一般分为生产流程层、运作层、计划层和战略层四个层次。BMP是根据业务环境的变化,推进人与人之间、人与系统之间,以及系统与系统之间的整合及调整的经营方法与解决方案的T
工具。
BPM最早是由工作流和企业应用集成(Enterprise Application Intergration)逐步融合而发展起来的,当时是为了满足无纸化办公需求(这也是最早的需求之一)。随着时间的推移,BPM的定义范围逐步扩展,不仅用来满足无纸化办公需求,现在BPM是一种企业集成技术,作为对面向服务系统架构SOA(Service-Oriented Architecture)、
企业应用集成EAI(Enterprise Application Integration)、企业服务总线ESB(Enterprise Service Bus)的补充。
从概念上来说,BPM包含两个不同方面的意思:管理规范和软件工程。各大BPM供应商长期以来试图抽象这两个不同的方面,但是依然混乱。
作为管理规范,BPM是每一个战略管理者的责任。BPM是组织必须执行的核心业务流程,包含了企业价值和如何提供其实现。作为日常工作的一部分,业务系统可以借助模型和流程规范地定义业务流程。BPM流程图表达的是执行流程的步骤,已完成特定目标。特别说明的是这些模型用于人与人的沟通。这些都是诠释未决的,这意味着它们可以包含更高级别有价值的信息而不包括不必要的细节。这种诠释未决的过程模型也被称为抽象业务流程(Abstract Business Processes.)。
BPM作为软件工程时可以由BPM系统(BPMS)执行可执行的业务流程。可执行的业务流程是在一个流程基础上表示不同的流程顺序。流程图完全可以看做一个抽象的业务流程。可执行流程不同于抽象业务流程,因为它总是以最简单的方式运行。这部分内容也是被大多数厂商认同并接受的。
1.2、BPMN
Business Process Modeling Notation,简称BPMN,中文译为业务流程建模标注,是由BPMN标准组织发布的,其第一版BPMN1.0规范于2004年5月发布。经过多年的改进新的规范BPMN2.0于2011年发布。之后各大厂商、开源社区均基于2.0规范设计自己的流程引擎,结束了各个厂商“各自为政”的局面,相应地统一了标准,从而利于以后的产品迁移。
BPMN定义了业务流程图,其基于流程图技术,同时对创建业务流程操作的图形化模型进行了裁减。业务流程的模型就是图形化对象的网图,包括活动(也可以说工作)和定义操作顺序的流控制。
在BPMN1.x版本中的一些概念,如人工任务、可以执行脚本、自动决策等,都是独立于供应商的可视化标准化的方式。在BPMN2.0规范中重点聚焦在如何执行语义和一个被业界认可的通用交换格式。这意味着基于BPMN2.0的流程建模不仅在流程设计器上可以通用,还可以在任何符合BPMN2.0规范的流程引擎上执行。
1.3、工作流生命周期
- 定义:工作流生命周期总是从流程定义开始。此阶段的任务主要是收集业务需求并转化为流程定义。一般由业务需求人员进行,然后交由开发人员加工转化为计算机可以识别的流程定义。
- 发布:由开发人员打包各种资源,然后在系统管理(平台)中发布流程定义。在具体的流程引擎中包括流程定义文件(bpmn20.xml结尾)、自定义表单、任务监听类。
- 执行:具体的流程引擎(例如,Activiti)按照事先定义的流程处理路线以任务驱动的方式执行业务流程。
- 监控:此阶段是依赖执行阶段。业务人员在办理任务的同时收集每个任务(Tsk)的结果,然后根据结果做出相应处理,例如,在采购办公用品流程中,在通过领导审批之后,采购人员就要根据申请单外出采购。
- 优化:在此阶段,一个完整的流程已经结束,或许能满足业务需求,或许需要优化,而糟糕的情况是需要重新设计(流程没结束就异常终止),优化与设计正是此阶段需要处理的。根据整个流程的运行过程结果分析问题的根源,然后在此基础上进一步改进,并再次开始一个新的周期。
2、Activiti的特点
2.1、数据持久化
Activiti的设计思想是简洁、快速。有过应用开发经验的开发人员都知道应用的瓶颈体现在和数据库交换数据的过程中,针对这一点Activiti选择了使用MyBatis,从而可以通过最优的SQL语句执行Command,仅凭如此就能让引擎在速度上保持最高的性能。
2.2、引擎Service接口
Activiti引擎提供了七大Service接口,均通过ProcessEngine获取,并且支持链式API编程风格。
| Service接口 | 作用 |
|---|---|
| RepositoryService | 流程仓库Service,用于管理流程仓库,例如,部署、删除、读取流程资源 |
| IdentifyService | 身份Service,可以管理和查询用户、组之间的关系 |
| RuntimeService | 运行时Service,可以处理所有正在运行状态的流程实例、任务等 |
| TaskService | 任务Service,用于管理、查询任务,例如,签收、办理、指派等 |
| FormService | 表单Service,用于读取和流程、任务相关的表单数据 |
| HistoryService | 历史Service,可以查询所有历史数据,例如,流程实例、任务、活动、变量、附件等 |
| ManagementService | 引擎管理Service,和具体业务无关,主要是可以查询引擎配置、数据库、作业等 |
2.3、流程设计器
在jBPM4时代有专门的Eclipse插件可以用来设计jPDL,同样Activiti团队也专门设计了用来设计BPMN2.0规范的流程设计器一Eclipse Designer。此外还有Signavio公司为Activiti定制的基于Web的Activiti Modeler流程设计器。
2.4、远程支持Spring
Activiti原生支持Spring,这一点对企业应用来说尤为重要:可以很轻松地进行Spring集成,非常方便管理事务和解析表达式(Expression)。
3、Activiti架构与组件

- Activiti Engine:作为最核心的模块,提供针对BPMN2.0规范的解析、执行、创建、管理(任务、流程实例)、查询历史记录并根据结果生成报表。
- Activiti Modeler:是模型设计器,其并非由Activiti公司所开发,而是由业界认可的Signavio公司赠送的(Signavio原本是收费的产品,现在被免费授权给Activiti用户使用)。适用于业务人员把需求转换为规范流程定义。
- Activiti Designer:功能和Activiti Modeler类似,同样提供了基于BPMN2.0规范的可视化设计功能,但是目前还没有完全支持BPMN规范的定义。适用于开发人员,可以把业务需求人员用Signavio设计的流程定义(XML格式)导入到Designer中,从而让开发人员将其进一步加工成为可以运行的流程定义。
- Activiti Explorer:可以用来管理仓库、用户、组,启动流程、任务办理等。此组件使用REST风格API(目的在于让开发人员快速入门),提供一个基础的设计模型。如果业务简单,也可以直接使用无需开发。还可以作为后台管理员的流程、任务管理系统使用。
- Activiti REST:提供Restful风格的服务,允许客户端以JSON的方式与引擎的REST API交互,通用的协议具有跨平台、跨语言的特性。
4、BPMN2.0
4.1、概述
BPMN2.0规范定义了业务流程的符号以及模型,并且为流程定义设定了转换格式,目的是为了让流程的定义实现可移植性,那么用户可以在不同的供应商环境中定义流程,并且这些流程可以移植到其他遵守BPMN2.0规范的供应商环境中。BPMN2.0在以下方面扩展了BPMN 1.2:
- 规范了流程元素的执行语法。
- 定义了流程模型和流程图的扩展机制。
- 细化了事件的组成。
- 扩展了参与者的交互定义。
- 定义了编排模型。
4.2、元素
使用BPMN2.0的目的是建立简单并且易懂的业务流程模型,但是同时又需要处理高度复杂的业务流程,因此要解决这两个矛盾的要求,需要在规范中定义标准的图形和符号。BPMN中定义了5个基础的元素类别。
- 流对象(Flow Objects):在一个业务流程中,流对象是用于定义行为的图形元素主要有事件(Events)、活动(Activities)和网关(Gateways)三种流对象。
- 数据(Data):主要有数据对象(Data Objects)、数据输入(Data Inputs)、数据输出(Data Outputs)和数据存储(Data Stores)4种元素。
- 连接对象(Connecting Objects):用于连接流对象,主要有4种连接流对象的方式:包括顺序流(Sequence Flows)、消息流(Message Flows)、关联(Associations)和数据关联(Data Associations)。
- 泳道(Swimlanes):泳道提供了两种途径用于组织基础的模型元素,分别是池(Pools)和道(Lanes)。
- 制品(Artifacts):制品主要用于为流程提供附加信息,当前制品包括组(Group)和注释(Text Annotation)。
以上的元素分类以及表1-1中所列的元素,均是BPMN规范中元素的组成部分,每个对象均有自己对应的图形。下表给出了各个元素的图形及其描述。



本文介绍了Activiti,一个基于Java的BPMN2.0流程引擎,涵盖工作流基础、特点、架构与BPMN2.0元素。亮点包括与Spring集成、数据持久化、Service接口和多样的设计工具。
1149

被折叠的 条评论
为什么被折叠?



