数据库字典
- 工作流相关表均已
wf_开头,wf为workflow的缩写。
公共表
功能分类 bp_functional_category
这是一个全局枚举表,不仅仅适用于工作流,而是适用于全局,为功能模块指定唯一的枚举值。例:工单、请假、合同、采购等等。
工作流使用这个值就是为了让各个功能可以独立查询自己的工作流,方便管理。表单也是如此,也会用到这个枚举,这样也方便在配置流程时选择自己业务的表单。
| 字段名 | 类型 | 默认 | 非空 | 描述 |
|---|---|---|---|---|
id | int unsigned | - | ✔️ | 主键 非自增长 |
category_name | varchar(64) | - | ✔️ | 分类名称 |
is_disabled | tinyint unsigned | 0 | ✔️ | 是否禁用 |
基础表
用于存储工作流基础信息,流程定义等。这些表均已 wf_ 开头,无二级前缀。
流程定义分组 wf_definition_group
用于存储流程定义分组,方便业务查询自己流程定义。
| 字段名 | 类型 | 默认 | 非空 | 描述 |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 自增长主键 |
parent_id | bigint unsigned | - | ✔️ | 父节点 id,为 0 代表根节点 |
group_name | varchar(64) | - | ✔️ | 分组名称 |
category_id | int unsigned | - | ✔️ | 分类 id |
create_employee_id | bigint unsigned | - | ✔️ | 创建人 id |
create_time | datetime | - | ✔️ | 创建时间 |
update_employee_id | bigint unsigned | - | ✔️ | 修改人 id |
update_time | datetime | - | ✔️ | 修改时间 |
流程定义 wf_definition
用于存储流程定义,包含流程定义的元数据,如流程名称、流程描述、流程版本、流程状态、流程创建时间、流程创建人、流程修改时间、流程修改人、流程定义的 json 内容等。
| 字段名 | 类型 | 默认 | 非空 | 描述 |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 自增长主键 |
group_id | bigint unsigned | - | ✔️ | 分组 id |
category_id | int unsigned | - | ✔️ | 分类 id |
flow_name | varchar(64) | - | ✔️ | 流程名称 |
flow_description | varchar(2048) | - | ❌ | 流程描述,描述当前流程的作用。 |
active_ver_id | bigint unsigned | - | ❌ | 当前活动(部署且启用)的的流程版本 id |
create_employee_id | bigint unsigned | - | ✔️ | 创建人 id |
create_time | datetime | - | ✔️ | 创建时间 |
update_employee_id | bigint unsigned | - | ✔️ | 修改人 id |
update_time | datetime | - | ✔️ | 修改时间 |
is_disabled | tinyint unsigned | 1 | ✔️ | 是否禁用,会将全部的版本禁用 |
is_deleted | tinyint unsigned | 0 | ✔️ | 是否已删除,会将全部的版本删除 |
流程表单关联表 wf_definition_form
| 字段名 | 类型 | 默认 | 非空 | 描述 |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 自增长主键 |
flow_id | bigint unsigned | - | ✔️ | 流程 id |
form_id | bigint unsigned | - | ✔️ | 表单 id |
流程版本表 wf_definition_ver
流程可以保留历史本版,方便进行回滚操作,这张表将记录流程的版本信息。
| 字段名 | 类型 | 默认 | 非空 | 描述 |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 自增长主键 |
flow_id | bigint unsigned | - | ✔️ | 流程 id |
category_id | int unsigned | - | ✔️ | 分类 id |
major_ver | int unsigned | - | ✔️ | 主版本号 |
minor_ver | int unsigned | - | ✔️ | 次版本号 |
flow_ver_description | varchar(2048) | - | ❌ | 流程版本描述,描述当前流程的作用。 |
create_employee_id | bigint unsigned | - | ✔️ | 创建人 id |
create_time | datetime | - | ✔️ | 创建时间 |
update_employee_id | bigint unsigned | - | ✔️ | 修改人 id |
update_time | datetime | - | ✔️ | 修改时间 |
is_disabled | tinyint unsigned | 1 | ✔️ | 是否禁用 |
is_deleted | tinyint unsigned | 0 | ✔️ | 是否已删除 |
流程版本数据表 wf_definition_ver_json
流程定义版本数据表,用于存储流程定义的 json 数据。修改这里的数据不会影响已部署的流程,需要进行部署后,才会将数据同步到 wf_deployment 表中。独立出一张表防止longtext 类型影响索引。
| 字段名 | 类型 | 默认 | 非空 | 描述 |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 自增长主键 |
flow_ver_id | bigint unsigned | - | ✔️ | 流程版本 id |
flow_json | longtext | - | ✔️ | 流程定义 json 数据 |
流程部署表 wf_deployment
用于存储流程部署信息,这里的数据是流程运行时读取的数据,同时也会存储在 redis 和本地缓存中。一个流程可以有多个版本,可以部署多个版本,但是同时只能启用一个版本,发起新流程时会使用这个版本。
| 字段名 | 类型 | 默认 | 非空 | 描述 |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 自增长主键 |
category_id | int unsigned | - | ✔️ | 分类 id |
flow_id | bigint unsigned | - | ✔️ | 流程 id |
flow_ver_id | bigint unsigned | - | ✔️ | 流程版本 id ;唯一索引 |
flow_name | varchar(64) | - | ✔️ | 流程名称 |
major_ver | int unsigned | - | ✔️ | 主版本号 |
minor_ver | int unsigned | - | ✔️ | 次版本号 |
flow_json | longtext | - | ✔️ | 流程定义 json 数据 |
create_employee_id | bigint unsigned | - | ✔️ | 创建人 id |
create_time | datetime | - | ✔️ | 创建时间 |
update_employee_id | bigint unsigned | - | ✔️ | 修改人 id |
update_time | datetime | - | ✔️ | 修改时间 |
is_disabled | tinyint unsigned | 1 | ✔️ | 是否禁用,禁用后不能创建新流程 |
is_deleted | tinyint unsigned | 0 | ✔️ | 是否已删除 |
流程运行表
流程运行表,用于存储流程运行时的数据,包括流程实例、任务、任务实例等。这些表均已 wf_ru 开头, ru 代表 runtime,表示运行时。
运行表的主键均不会使用自增主键,因为当流程结束后要将数据迁移至历史表中,使用雪花 id 可以保证数据迁移时的 id 不变。
流程执行实例表 wf_ru_execution
运行时的流程实例表,这个表和 wf_ru_task 表一起控制了任务的产生与完成等。这个表是工作流程的核心表,这个表会体现主干与分支流程实例的概念。
一般来讲一个流程实例都有一条主线。如果流程为直线流程,那么流程实例在这个表中只有一条记录对应。 但如果流程有会签或并行网关时,这时候会产生新的实例,这些实例会以相同的 proc_inst_id 保存在表中。
| 字段名 | 默认 | 非空 | 描述 | |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 主键,雪花主键 |
category_id | int unsigned | - | ✔️ | 分类 id |
proc_inst_id | bigint unsigned | - | ✔️ | 流程实例 id,一个流程实例的多个执行实例均相同。如果当前实例是主线实例(即发起流程时的实例),则这个就是自己的 id。 |
flow_id | bigint unsigned | - | ✔️ | 流程 id |
flow_ver_id | bigint unsigned | - | ✔️ | 流程版本 id |
parent_id | bigint unsigned | - | ✔️ | 父流程实例 id,为主键 id 不是 proc_inst_id。根节点为 0 |
execution_name | varchar(256) | - | ❌ | 流程实例名。 |
execution_state | tinyint unsigned | 1 | ✔️ | 实例状态 0-结束 1-活动 2-挂起 |
start_node_id | varchar(128) | - | ✔️ | 流程实例启动时的第一个活动节点。 |
active_node_id | varchar(128) | - | ❌ | 当前活动的节点 id,根实例不会有值。 |
start_time | datetime | - | ✔️ | 流程开始时间 |
start_employee_id | bigint unsigned | - | ✔️ | 开始流程人 id,如果为 0 则是系统发起的(网关发起的也算系统发起) |
任务表 wf_ru_task
用于存储当前活动的任务信息。这些任务是流程实例执行过程中等待人工交互的部分,例如审批、填写表单等。
一个执行实例在运行过程中,可能会有多个任务,但这些任务一定是同一个任务节点下的。并签、串签的任务完成条件是在流程中配置的,当并签和串签任务触发时会生成一个主任务。 这个主任务用于产生真实的处理任务,这些子任务完成时不会影响主任务的执行。当这些子任务达到任务完成条件时,这个主任务会自动完成。
| 字段名 | 默认 | 非空 | 描述 | |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 主键,雪花主键 |
category_id | int unsigned | - | ✔️ | 分类 id |
execution_id | bigint unsigned | - | ✔️ | 执行实例 id,关联到 wf_ru_execution 表 id |
proc_inst_id | bigint unsigned | - | ✔️ | 流程实例 id,产生当前任务的流程执行实例的 proc_inst_id |
flow_id | bigint unsigned | - | ✔️ | 流程 id |
flow_ver_id | bigint unsigned | - | ✔️ | 流程版本 id |
parent_task_id | bigint unsigned | - | ❌ | 父任务 id |
task_node_id | varchar(128) | - | ✔️ | 任务节点 id,流程定义的节点 id |
task_name | varchar(256) | - | ❌ | 任务名称。 |
task_owner | bigint unsigned | - | ❌ | 任务的所有者 id, 任务的初始创建者或者原始责任人。 |
task_assignee | bigint unsigned | - | ❌ | 任务受让人 id,当前被分配给的执行者或者负责人。 |
delegation_state | tinyint unsigned | 0 | ✔️ | 任务委托状态
|
task_priority | int unsigned | 50 | ✔️ | 任务的优先级,越小越优先,最小为 0 |
create_time | datetime | - | ✔️ | 任务创建时间。 |
claim_time | datetime | - | ❌ | 任务认领时间。 |
due_time | datetime | - | ❌ | 任务的截止日期,过了这个日期任务应被视为逾期。 |
task_state | tinyint unsigned | 0 | ✔️ | 任务状态。 0-已创建 1-已签收 2-待创建 3-挂起 4-完成 5-终止 |
任务归属 wf_ru_task_identity
用于存储流程实例中任务与参与者之间的关联信息。它记录了哪些用户、用户组或者其它实体与流程中的任务实例关联。
- 当任务只有一个候选处理人时,任务自动认领。当前表会插入一条数据,参与者类型为
0。 - 当任务有多个候选处理人并且为竟签时,任务表插入一条没有受让人数据。当前表会插入多条数据(配置了几个候选处理人就有几条数据),参与者类型为
1。 - 当任务有一个或多个候选处理组(部门、技能、角色、岗位)并且为竟签时,任务表插入一条没有受让人数据。当前表会插入多条数据(配置了几个候选处理组就有几条数据),参与者类型为
1。 - 当任务被认领时,任务表插入一条数据,
parent_task_id会设置为没有受让人的那个任务的id。当前表会插一条数据,参与者类型为0。
| 字段名 | 默认 | 非空 | 描述 | |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 主键,雪花主键 |
category_id | int unsigned | - | ✔️ | 分类 id |
execution_id | bigint unsigned | - | ✔️ | 执行实例 id,关联到 wf_ru_execution 表 id |
proc_inst_id | bigint unsigned | - | ✔️ | 流程实例 id,产生当前任务的流程执行实例的 proc_inst_id |
flow_id | bigint unsigned | - | ✔️ | 流程 id |
flow_ver_id | bigint unsigned | - | ✔️ | 流程版本 id |
task_id | bigint unsigned | - | ✔️ | 任务 id |
identity_type | tinyint unsigned | - | ✔️ | 任务参与者的类型。
|
identity_code | varchar(256) | - | ✔️ | 任务参与者的编码。这是一个组合的编码,根据不同的参与者类型,会使用不同的前缀存储,方便索引查询。员工:e_、部门:d_、角色:r_、技能:s_、岗位:p_。 |
活动实例 wf_ru_active_inst
用于存储流程实例中的每一个活动(如任务、网关、事件等)的当前状态信息。这个表的每一行记录代表流程实例执行过程中的一个活动实例的状态。
流程历史表
流程历史表,用于存储流程历史的数据,包括流程实例、任务、任务实例等。这些表均已 wf_hi 开头, hi 代表 history,表示历史。
历史表的主键均不会使用自增主键,因为因为这些数据来自运行表中,使用雪花 id 可以保证数据迁移时的 id 不变。
流程历史执行实例表 wf_hi_execution
| 字段名 | 默认 | 非空 | 描述 | |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 主键,雪花主键 |
category_id | int unsigned | - | ✔️ | 分类 id |
proc_inst_id | bigint unsigned | - | ✔️ | 流程实例 id,一个流程实例的多个执行实例均相同。如果当前实例是主线实例(即发起流程时的实例),则这个就是自己的 id。 |
flow_id | bigint unsigned | - | ✔️ | 流程 id |
flow_ver_id | bigint unsigned | - | ✔️ | 流程版本 id |
parent_id | bigint unsigned | - | ✔️ | 父流程实例 id,为主键 id 不是 proc_inst_id。根节点为 0 |
execution_name | varchar(256) | - | ❌ | 流程实例名。 |
start_node_id | varchar(128) | - | ✔️ | 流程实例启动时的第一个活动节点。 |
end_node_id | varchar(128) | - | ❌ | 当执行实例已完成时,记录结束时的活动节点 id。 |
start_time | datetime | - | ✔️ | 流程开始时间 |
start_employee_id | bigint unsigned | - | ✔️ | 开始流程人 id,如果为 0 则是系统发起的 |
end_time | datetime | - | ❌ | 当前执行实例结束时间 |
历史任务表 wf_hi_task
| 字段名 | 默认 | 非空 | 描述 | |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 主键,雪花主键 |
category_id | int unsigned | - | ✔️ | 分类 id |
execution_id | bigint unsigned | - | ✔️ | 执行实例 id,关联到 wf_hi_execution 表 id |
proc_inst_id | bigint unsigned | - | ✔️ | 流程实例 id,产生当前任务的流程执行实例的 proc_inst_id |
flow_id | bigint unsigned | - | ✔️ | 流程 id |
flow_ver_id | bigint unsigned | - | ✔️ | 流程版本 id |
parent_task_id | bigint unsigned | - | ❌ | 父任务 id |
task_node_id | varchar(128) | - | ✔️ | 任务节点 id,流程定义的节点 id |
task_name | varchar(256) | - | ❌ | 任务名称。 |
task_owner | bigint unsigned | - | ❌ | 任务的所有者 id, 任务的初始创建者或者原始责任人。 |
task_assignee | bigint unsigned | - | ❌ | 任务受让人 id,当前被分配给的执行者或者负责人。 |
delegation_state | tinyint unsigned | 0 | ✔️ | 任务委托状态
|
task_priority | int unsigned | 50 | ✔️ | 任务的优先级,越小越优先,最小为 0 |
create_time | datetime | - | ✔️ | 任务创建时间。 |
claim_time | datetime | - | ❌ | 任务认领时间。 |
due_time | datetime | - | ❌ | 任务的截止日期,过了这个日期任务应被视为逾期。 |
task_state | tinyint unsigned | 0 | ✔️ | 任务状态。 0-已创建 1-已签收 2-待创建 3-挂起 4-完成 5-终止 |
end_time | datetime | - | ❌ | 当前任务结束时间 |
历史任务归属 wf_hi_task_identity
| 字段名 | 默认 | 非空 | 描述 | |
|---|---|---|---|---|
id | bigint unsigned | - | ✔️ | 主键,雪花主键 |
category_id | int unsigned | - | ✔️ | 分类 id |
execution_id | bigint unsigned | - | ✔️ | 执行实例 id,关联到 wf_hi_execution 表 id |
proc_inst_id | bigint unsigned | - | ✔️ | 流程实例 id,产生当前任务的流程执行实例的 proc_inst_id |
flow_id | bigint unsigned | - | ✔️ | 流程 id |
flow_ver_id | bigint unsigned | - | ✔️ | 流程版本 id |
task_id | bigint unsigned | - | ✔️ | 任务 id |
identity_type | tinyint unsigned | - | ✔️ | 任务参与者的类型。
|
identity_code | varchar(256) | - | ✔️ | 任务参与者的编码。这是一个组合的编码,根据不同的参与者类型,会使用不同的前缀存储,方便索引查询。员工:e_、部门:d_、角色:r_、技能:s_、岗位:p_。 |
task_assignee | bigint unsigned | - | ❌ | 任务受让人 id,当前被分配给的执行者或者负责人。 当 identity_type = 0 时会写入该值,为了方便查询。 |