1.3Activiti的特点
1. 数据持久化
Activiti的设计思想是简洁、快速。有过应用开发经验的开发人员都知道应用的瓶颈体现在和数据库交换数据的过程中,针对这一点Activiti选择了使用MyBatis,从而可以通过最优的SQL语句执行Command,仅凭如此就能让引擎在速度上保持最高的性能。
2. 引擎Service接口
Activiti引擎提供了七大Service接口,均通过ProcessEngine获取,并且支持链式API编程风格。表1-1简单列出七个Service接口及其作用,具体使用会在后面的章节陆续介绍。
表1-1Activiti引擎的七大Service接口
Service接口 作 用
RepositoryService 流程仓库Service,用于管理流程仓库,例如,部署、删除、读取流程资源
IdentifyService 身份Service,可以管理和查询用户、组之间的关系
RuntimeService 运行时Service,可以处理所有正在运行状态的流程实例、任务等
TaskService 任务Service,用于管理、查询任务,例如,签收、办理、指派等
FormService 表单Service,用于读取和流程、任务相关的表单数据
HistoryService 历史Service,可以查询所有历史数据,例如,流程实例、任务、活动、变量、附件等
ManagementService 引擎管理Service,和具体业务无关,主要是可以查询引擎配置、数据库、作业等
3. 流程设计器
在jBPM4时代有专门的Eclipse插件可以用来设计jPDL,同样Activiti团队也专门设计了用来设计BPMN 2.0规范的流程设计器—Eclipse Designer。此外还有Signavio公司为Activiti定制的基于Web的Activiti Modeler流程设计器。
4. 原生支持Spring
Activiti原生支持Spring,这一点对企业应用来说尤为重要:可以很轻松地进行Spring集成,非常方便管理事务和解析表达式(Expression)。
5. 分离运行时与历史数据
Activiti继承自jBPM4,在表结构设计方面也遵循运行时与历史数据的分离,这样的设计可以快速读取运行时数据,仅当需要查询历史数据时再从专门的历史数据表中读取。这种设计方式可以大幅提高数据的存取效率,尤其是当数据日积月累时依然能够快速反应。