1. Activiti开源框架部分
1.1 Activiti简介
Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。
Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。
Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人员。通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的 BPM 应用程序。
1.2 Activiti关键对象
1.2.1 Deployment
流程部署对象,部署一个流程时创建,主要对应数据表ACT_RE_DEPLOYMENT。
1.2.2 ProcessDefinitions
流程定义,部署成功后自动创建,流程模型部署一次生成一条流程定义,主要对应数据表ACT_RE_PROCDEF。
1.2.3 ProcessInstances
流程实例,启动流程时创建,是根据一次(一条)业务创建的,流程驱动的入口,两者之间是一对一的关系。流程引擎会创建一条数据到ACT_RU_EXECUTION表,同时也会根据history的级别决定是否查询相同的历史数据到ACT_HI_PROCINST表。
1.2.4 Task
任务,Task和Execution是一对一关系。Task可以是任何类型的Task实现,可以是用户任务(UserTask)、Java服务(JavaServiceTask)等。在实际流程运行中面向对象不同,用户任务(UserTask)需要有人为参与完成(complete),Java服务需要由系统自动执行(execution)。Task主要对应数据表ACT_RU_TASK和ACT_HI_TASKINST。
1.2.5 Execution
执行计划,即一个流程实例(ProcessInstance)具体要执行的过程对象。流程实例和流程执行中的所有节点都是一条Execution,如UserTask、ServiceTask等。
1.3 Activiti服务任务
1.3.1 RepositoryService
Activiti 中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据 ( 例如 BPMN2.0 XML 文件,表单定义文件,流程定义图像文件等 ),这些文件都存储在 Activiti 内建的 Repository 中。Repository Service 提供了对 repository 的存取服务,流程仓库service,用于管理流程仓库,例如部署,删除,读取流程资源。
1.3.2 RunTimeService
在Activiti中,每个流程定义被启动一次之后,都会生成相应的流程对象实例。RunTimeService提供启动流程,查询流程实例,设置获取流程实例变量等功能。此外还提供对流程部署,流程定义和流程实例存取的服务。
1.3.3 TaskService
在activiti业务流程定义的每一个执行节点被称为一个task,对流程中的数据存取,状态变更等操作都需要在task中完成。TaskService提供了对用户task和form的相关操作。提供了运行时任务的查询、领取、完成、删除以及变量设置等功能。
1.3.4 IdentityService
Activiti内置了用户以及用户组的概念以及功能,必须使用用户或者用户组才能获取到相应的task。IdentityService提供了对用户和用户组的管理功能。
1.3.5 HistoryService
主要用于获取正在运行或者已经运行结束的流程实例信息,与RunTimeService获取的流程信息不同,历史信息包含已经持久储存化的信息,并已经针对查询做出优化。
1.3.6 FormService
Activiti中的流程和状态Task均可关联相关的业务数据,通过FormService可以存取启动和完成任务所需的表单数据并根据需要来渲染表单。
1.3.7 ManagementService
ManagementService提供对流程引擎的管理和维护的功能,这些功能不在工作流驱动的应用程序中使用,主要运用activiti的日常维护。
1.4 初始数据库
表分类 | 表名 | 含义 |
通用配置 | ACT_GE_BYTEARRAY | 通用的流程定义和流程资源 |
ACT_GE_PROPERTY | 系统相关属性 | |
流程历史记录 | ACT_HI_ACTINST | 历史的流程实例 |
ACT_HI_ATTACHMENT | 历史的流程附件 | |
ACT_HI_COMMENT | 历史的说明性信息 | |
ACT_HI_DETAIL | 历史的流程运行中的细节信息 | |
ACT_HI_IDENTITYLINK | 历史的流程运行过程中用户关系 | |
ACT_HI_PROCINST | 历史的流程实例 | |
ACT_HI_TASKINST | 历史的任务实例 | |
ACT_HI_VARINST | 历史的流程运行中的变量信息 | |
用户用户组表 | ACT_ID_GROUP | 身份信息-组信息 |
ACT_ID_INFO | 用户扩展信息 | |
ACT_ID_MEMBERSHIP | 身份信息-用户和组关系的中间表 | |
ACT_ID_USER | 身份信息-用户信息 | |
流程定义表 | ACT_RE_DEPLOYMENT | 部署单元信息 |
ACT_RE_MODEL | 模型信息 | |
ACT_RE_PROCDEF | 已部署的流程定义 | |
运行实例表 | ACT_RU_EVENT_SUBSCR | 运行时事件 |
ACT_RU_EXECUTION | 运行时流程执行实例 | |
ACT_RU_IDENTITYLINK | 运行时用户关系信息 | |
ACT_RU_JOB | 运行时作业 | |
ACT_RU_TASK | 运行时任务 | |
ACT_RU_VARIABLE | 运行时变量表 | |
其他 | ACT_EVT_LOG | 事件日志表 |
ACT_PROCDEF_INFO | 流程定义扩展表 |