一. 概述
Activiti 是个全新、基于 Apache 2 许可的开源项目,提供了轻量级、嵌入式的 BPM 引擎并支持 BPMN 2.0 。
该项目由 jBPM 创建者,前 JBoss jBPM 领导与 BPM 权威 Tom Baeyens 主持大局。前 jBPM 团队成员 Joram Barrez 此前也加入了该项目,成为 Activiti 的核心开发人员。
Activiti 第一个正式版在 2010 年 12 月 1 号 release ,版本号为 5.0 ,也是隐晦地暗示这个新的 BPM 项目是继承自 JBPM 4
二. 架构
1 . Activiti 组件 :
对于 Activiti ,它目前具有以下几个关键组件:
1. 流程引擎 (ProcessEngine)
作用:运行时核心组件,解析流程定义文件 (.bpmn20.xml 文件 ) ,将其转化为纯粹的内存 Java 对象,以供运行时各个功能使用;
2. 管理员控制台( activiti-probe )
作用:供系统管理员了解 Activiti 底层数据库目前的情况。
3. 用户控制台( activiti-explorer )
作用:供普通用户真正使用 Activiti 流程引擎功能
4.业务流程建模工具(activiti-modeler)
作用:供业务人员通过图形界面建立需要的业务流程模型。
5. 流程周期层 (activiti-cycle )
作用: 它是一个促进业务人员,开发人员和 IT 运营人员之间协作的基于 web 的应用程序。
6. 流程虚拟机( process virtual machine )
作用: 流程虚拟机是 Activiti 引擎的架构基础层。它允许对活动类型,特性和完整的流程语言进行自如地插拔。
2. Activiti API
中间 ProcessEngine 代表流程引擎,它需要引用一个 ProcessEngineConfiguration 对象,它有几种生成方式。
其中最基本的方式如下 :
rocessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); RuntimeService runtimeService = processEngine.getRuntimeService(); RepositoryService repositoryService = processEngine.getRepositoryService(); TaskService taskService = processEngine.getTaskService(); ManagementService managementService = processEngine.getManagementService(); IdentityService identityService = processEngine.getIdentityService(); HistoryService historyService = processEngine.getHistoryService(); FormService formService = processEngine.getFormService();
通过 ProcessEngineBuilder 读取 activiti 的配置文件,就可以生成流程引擎实例。
通过流程引擎实例 processEngine, 我们就可以通过 getXXXService() 取得各种包含 workflow/BPM 方法的 service 。
RepositoryService : 提供方法获取各种流程和部署文件的信息 .
TaskService : 提供对任务相关的各种操作
identityService : 管理用户和用户组。
FormService : 获取或者绑定数据到流程实例上
RuntimeService : 提供操作部署文件,流程文件和流程实例的方法 .
ManagementService : 提供管理员对流程引擎的监控,和流程引擎服务应用无关。
HistoryService : 提供正在执行和过去执行的各种流程实例信息