持续更新
Activiti 是一个针对企业用户、开发人员 、系统管理员的轻量级工作流业务管理平台。创始人 Tom Baeyens 曾经是 JBoss jBPM 的项目架构师。Activiti 延续自 jBPM4。而 jBPM5 之后的版本,基于 Drools Flow 重新设计。
- 开源: Apache V2 license
- 官网: https://www.activiti.org
- GitHub: https://github.com/Activiti/Activiti
- 团队: https://github.com/Activiti
- GitBook: https://activiti.gitbook.io
- User Guide: https://www.activiti.org/userguide/index.html
主要特性
Mybatis
Activiti 的设计思想是简洁 、 快速 。 所以它选择了MyBatis 作为数据持久层框架,从而可以通过最优的 SQL 语句执行 Command ,仅凭如此就能让引擎在速度上保持最高的性能 。服务接口
Activiti 提供了 7 个服务接口,都通过 ProcessEngine 来获取,并且支持链式编程风格
服务接口 | 说明 |
---|---|
RepositoryService | 仓库服务,用于管理仓库,比如部署或删除流程定义、读取流程资源等。 |
IdentifyService | 身份服务,管理用户、组以及它们之间的关系。 |
RuntimeService | 运行时服务,管理所有正在运行的流程实例、任务等对象。 |
TaskService | 任务服务,管理任务。 |
FormService | 表单服务,管理和流程、任务相关的表单。 |
HistroyService | 历史服务,管理历史数据。 |
ManagementService | 引擎管理服务,比如管理引擎的配置、数据库和作业等核心对象。 |
流程设计器
与 jBPM 类似,Activiti 也提供了基于 Eclipse 的流程设计器 —— Eclipse Designer。 此外还有 Signavio 公司为 Activiti 定制的基于 Web 的 流程设计器 —— Activiti Modeler。原生支持 Spring
Activiti 可以很容易与 Spring 集成,这对于管理事务和解析表达式来说,非常方便。分离运行时数据与历史数据
这一特性与 jBPM4 的设计理念一脉相承。这样的设计架构使得引擎可以快速地读取运行时数据,只有在需要时才会从历史表中查询历史数据。 这样可以极大地提高数据的存取效率。
Activiti 架构
组件 | 说明 |
---|---|
流程引擎(Activiti Engine) | 提供针对 BPMN 2.0 规范的解析;执行、创建和管理流程实例与任务;以及查询历史记录并根据结果生成报表等功能。 |
业务模型设计器(Activiti Modeler) | 由 Signavio 公司设计实现,适用于业务人员把需求转换为流程定义。 |
开发模型设计器(Activiti Designer) | 开发人员可以导入业务需求人员用业务模型设计器设计的流程定义文件( XML 格式),这样就可以进一步加工成为可以运行的流程定义信息 。 |
流程管理器(Activiti Explorer) | 用于管理仓库、用户、组、流程实例和任务等流程对象。 |
流程 REST 服务(Activiti REST) | 提供 Restful 风格的服务,允许客户端以 JSON 的数据格式与引擎的 REST API 进行交互。 |
工作流生命周期
阶段 | 说明 |
---|---|
定义 | 业务需求人员收集业务需求,然后交由开发人员加工转化为计算机可以识别的流程定义。 |
发布 | 开发人员打包各种资源,然后在系统管理平台中发布流程定义(包括流程定义文件 、自定义表单 、 任务监听类等资源 )。 |
执行 | 流程引擎按照事先定义好的流程,以任务驱动的方式予以执行 。 |
监控 | 监控依赖执行阶段 。 业务人员在办理任务的同时,引擎会收集每个任务的办理结果,然后根据结果做出处理。 |
优化 | 对整个流程的运行结果进行分析,在此基础上进一步改进,并再次开始一个新的周期。 |
Activiti5 与 jBPM5 技术组成对比
序号 | 技术组成 | Activiti | jBPM5 |
---|---|---|---|
1 | 数据库持久层ORM | MyBatis | Hibernate |
2 | 持久化标准 | 无 | JPA 规范 |
3 | 事务管理 | Mybatis 机制/Spring 事务控制 | Bitronix,基于 JTA 事务管理 |
4 | 数据库连接方式 | Jdbc/DataSource | Jdbc/DataSource |
5 | 支持数据库 | Oracle、SQL Server、MySQL 等多数数据库 | Oracle、SQL Server、MySQL 等多数数据库 |
6 | 设计模式 | Command 模式、观察者模式等 | |
7 | 内部服务通讯 | Service 间通过 API 调用 | 基于 Apache Mina 异步通讯 |
8 | 集成接口 | SOAP、Mule、RESTful | 消息通讯 |
9 | 支持的流程格式 | BPMN2、xPDL、jPDL 等 | 目前仅支持 BPMN2 XML |
10 | 引擎核心 | PVM(流程虚拟机) | Drools |
11 | 技术前身 | jBPM3、jBPM4 | Drools Flow |
12 | 所属公司 | Alfresco | jBoss.org |
Activiti 的首席架构师 Tom Baeyens 曾提到,Activiti 的首个目标就是要获得开发者的青睐。它在使用时极为方便,只是个 jar 文件,使用时仅需要将其放在类路径中。当然,Activiti 也可以作为独立服务器的方式使用;同时 Activiti 提供了很多 BPM 高级工具,其中还包括开发了协作工具,使得开发人员、业务人员和运维人员能够更好的协同工作。
关键字
- BPMN(Business Process Model and Notation): 业务流程建模和标注。
BPMN 定义了一个业务流程图,这个流程图被设计用于创建业务流程操作的图形化模型 。 而一个业务流程模型( Business Process Model ),指一个由图形对象( graphical objects )组成的网状图,图形对象包括活动( activities) 和用于定义这些活动执行顺序的流程控制器( flow controls )。 - Activiti Modeler