Activiti工作流概述
Activiti是一款开源的工作流引擎,它提供了一个强大的平台来定义、执行和管理业务流程。在本文档中,我们将深入探讨 Activiti工作流的核心概念和操作记录,重点集中在工作流表结构、流程图字段匹配以及数据库查询上。
### 1. 工作流表结构
在Activiti中,数据库存储了工作流执行过程的关键信息。例如,`act_hi_procinst` 表是历史流程实例表,包含了流程实例ID(PROC_INST_ID)、流程定义ID、任务实例ID等重要字段。了解这些表的结构有助于我们有效地进行数据检索和监控流程状态。通过链接[此处](https://blog.csdn.net/weixin_45708191/article/details/126777320),您可以找到更详细的表结构描述和示例。
### 2. 流程图字段与数据库字段映射
流程图中的任务通常在数据库中的`act_hi_taskinst`表有所体现,其中`NAME_`字段对应于任务的标题或名称。在查询历史任务实例时,我们可以利用这个字段来检索特定的任务实例,如使用SQL语句`SELECT * FROM act_hi_taskinst WHERE proc_inst_id_='18720097'`获取指定流程实例下的任务信息。
### 3. 数据库查询与任务流转
- 发布任务时,新创建的任务处于未分配状态,`TASK_ID`有值而`PROC_INST_ID`为`null`,因为此时任务尚未关联到任何流程实例。
- 当任务被接收时,`TASK_ID`变为`null`,而`PROC_INST_ID`有了值,这表明任务已被分配给某个用户,并成为流程实例的一部分。例如,查询任务执行者可以使用`act_ru_task`表,如`SELECT * FROM act_ru_task WHERE proc_inst_id_='18720097'`。
### 4. 聚合查询与多任务处理
在某些情况下,一个流程可能包含多个任务节点,这时我们需要对这些节点进行聚合查询。例如,`ACT_RU_IDENTITYLINK`表用于存储参与者与任务之间的关系,当一个任务有多个人选时,查询此表能获取所有相关人员及其与任务的关系。使用`wm_concat()`函数,我们可以合并节点名称和参与者的姓名,如`SELECT PROC_INST_ID_, wm_concat(NAME_) as name_, wm_concat(username) as username`,这样可以一次性获取所有关联的节点和人员信息。
掌握Activiti工作流表结构、字段映射以及SQL查询技巧对于管理和监控工作流流程至关重要。理解这些概念和操作能够帮助开发人员高效地设计和实现业务流程,同时确保流程的正确执行和跟踪。