Activiti 学习及使用

持续更新
Activiti 是一个针对企业用户、开发人员 、系统管理员的轻量级工作流业务管理平台。创始人 Tom Baeyens 曾经是 JBoss jBPM 的项目架构师。Activiti 延续自 jBPM4。而 jBPM5 之后的版本,基于 Drools Flow 重新设计。

主要特性

  • 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 架构

组件 说明
流程引擎(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

参考资料