Flowable

1. 工作流各个表的功能和字段介绍

  1. Flowable的所有数据库表都以ACT_开头。第二部分是说明表用途的两字符标示符。服务API的命名也大略符合这个规则。

  2. ACT_RE_: 'RE’代表repository。带有这个前缀的表包含“静态”信息,例如流程定义与流程资源(图片、规则等)。

  3. ACT_RU_: 'RU’代表runtime。这些表存储运行时信息,例如流程实例(process instance)、用户任务(user task)、变量(variable)、作业(job)等。Flowable只在流程实例运行中保存运行时数据,并在流程实例结束时删除记录。这样保证运行时表小和快。

  4. ACT_HI_: 'HI’代表history。这些表存储历史数据,例如已完成的流程实例、变量、任务等。

  5. ACT_GE_: “GE”代表“General”(通用),通用数据。在多处使用。

1.1 通用数据表

ACT_GE_BYTEARRAY

二进制数据表,如流程定义、流程模板、流程图的字节流文件

CREATE TABLE `ACT_GE_BYTEARRAY` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT NULL,
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`BYTES_` longblob,
`GENERATED_` tinyint DEFAULT NULL,
PRIMARY KEY (`ID_`),
KEY `ACT_FK_BYTEARR_DEPL` (`DEPLOYMENT_ID_`),
CONSTRAINT `ACT_FK_BYTEARR_DEPL` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `ACT_RE_DEPLOYMENT` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

ACT_GE_BYTEARRAY 是 Flowable 中用于存储字节数组数据的表,它在流程引擎中广泛用于存储各种类型的二进制数据,最常见的用途是存储流程定义的 BPMN XML 数据、流程实例的变量数据、表单数据等。

以下是 ACT_GE_BYTEARRAY 中各个字段的含义:

  1. ID_:主键,字节数组数据的唯一标识符。
  2. REV_:版本号,用于乐观锁机制,记录了数据的版本。
  3. NAME_:名称,用于标识字节数组数据的名称。
  4. BYTES_:字节数组数据,实际的二进制数据存储在该字段中。在 Flowable 中,该字段最常用于存储流程定义的 BPMN XML 数据,也可以用于存储其他类型的数据。
  5. DEPLOYMENT_ID_:部署ID,记录了与字节数组数据相关联的流程部署ID。如果该数据与流程定义或其他资源有关联,该字段将指向 ACT_RE_DEPLOYMENT 表中的部署记录ID。
  6. GENERATED_:是否生成标志,用于指示字节数组数据是否是自动生成的。在某些情况下,Flowable 会自动生成一些数据,比如在部署流程定义时,会自动生成 BPMN XML 数据并存储在该表中。这个字段标识是否是自动生成的数据,值为 1 表示是自动生成的,值为 0 表示不是自动生成的。
  7. TENANT_ID_:租户ID,用于多租户环境,表示该字节数组数据所属的租户。在默认情况下,该字段为空字符串,表示不属于任何特定租户。

需要注意的是,ACT_GE_BYTEARRAY 表的 BYTES_ 字段是用于存储二进制数据的核心字段,而其他字段则用于标识和管理这些数据的相关信息。

  • act_ge_property:属性数据表(不常用);

1.2 历史表

HistoryService接口操作的表

ACT_HI_COMMENT

历史意见表

CREATE TABLE `ACT_HI_COMMENT` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TIME_` datetime(3) NOT NULL,
`USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`ACTION_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`MESSAGE_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`FULL_MSG_` longblob,
PRIMARY KEY (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

在Flowable中,ACT_HI_COMMENT表是用于存储历史任务的批注或评论信息的表。当用户在完成任务时添加了审批意见、评论或批注时,这些信息会被记录在ACT_HI_COMMENT表中,以便后续查阅和审计。该表的设计目的是为了跟踪任务的历史状态和相关评论,提供对流程执行过程的审计和追踪功能。

以下是ACT_HI_COMMENT表中一些主要字段的解释:

  1. ID_: 批注的唯一标识,通常采用UUID或类似的方式生成。

  2. TYPE_: 批注类型,区分不同类型的批注,例如审批意见、评论等。

  3. TIME_: 记录批注添加的时间戳,即添加批注的时间。

  4. USER_ID_: 添加批注的用户ID,表示是哪个用户添加的批注。

  5. TASK_ID_: 关联的任务ID,表示该批注是与哪个任务相关联的。

  6. PROC_INST_ID_: 关联的流程实例ID,表示该批注是与哪个流程实例相关联的。

  7. ACTION_: 表示与批注相关的操作,例如"AddComment"表示添加评论,"AddAttachment"表示添加附件等。

  8. MESSAGE_: 批注的具体内容,通常是用户输入的评论或审批意见。

ACT_HI_COMMENT表中的这些字段记录了与历史任务相关的批注信息。当任务完成并添加了批注时,该表会记录下批注的相关信息,包括批注内容、时间、用户、任务和流程实例的关联等。通过查询ACT_HI_COMMENT表,可以轻松地查找特定任务的批注历史,了解任务执行过程中的各种评论和审批意见。

请注意,ACT_HI_COMMENT表仅用于记录历史批注信息,如果需要存储当前运行时任务的评论或审批意见,应该使用运行时任务表(ACT_RU_TASK)或流程变量表(ACT_RU_VARIABLE)。

ACT_HI_PROCINST

ACT_HI_PROCINST 是 Flowable 中的历史表之一,用于存储已完成的流程实例的历史信息。每个已完成的流程实例对应于表中的一条记录。它记录了流程实例的启动、完成时间、持续时间等信息,是 Flowable 引擎用于保留已完成流程实例历史数据的重要表之一。

CREATE TABLE `ACT_HI_PROCINST` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT '1',
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`BUSINESS_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`START_TIME_` datetime(3) NOT NULL,
`END_TIME_` datetime(3) DEFAULT NULL,
`DURATION_` bigint DEFAULT NULL,
`START_USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`START_ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`END_ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SUPER_PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '',
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`CALLBACK_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`CALLBACK_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`REFERENCE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`REFERENCE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`BUSINESS_STATUS_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
PRIMARY KEY (`ID_`),
UNIQUE KEY `PROC_INST_ID_` (`PROC_INST_ID_`),
KEY `ACT_IDX_HI_PRO_INST_END` (`END_TIME_`),
KEY `ACT_IDX_HI_PRO_I_BUSKEY` (`BUSINESS_KEY_`),
KEY `ACT_IDX_HI_PRO_SUPER_PROCINST` (`SUPER_PROCESS_INSTANCE_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

以下是表 ACT_HI_PROCINST 中各个字段的含义:

  1. ID_:主键,历史流程实例的唯一标识符。
  2. PROC_INST_ID_:流程实例ID,记录了历史流程实例的唯一标识符。
  3. BUSINESS_KEY_:业务键,用于关联历史流程实例与业务数据,通常是业务数据的唯一标识符。
  4. PROC_DEF_ID_:流程定义ID,记录了历史流程实例所属的流程定义的唯一标识符。
  5. START_TIME_:启动时间,记录了历史流程实例的启动时间。
  6. END_TIME_:结束时间,记录了历史流程实例的结束时间。
  7. DURATION_:持续时间,记录了历史流程实例的持续时间(即从启动到结束的时间间隔)。
  8. START_USER_ID_:启动用户ID,记录了历史流程实例的启动用户的唯一标识符。
  9. START_ACTIVITY_ID_:启动活动ID,记录了历史流程实例的启动活动(Start Event)的唯一标识符。
  10. END_ACTIVITY_ID_:结束活动ID,记录了历史流程实例的结束活动(End Event)的唯一标识符。
  11. DELETE_REASON_:删除原因,记录了历史流程实例被删除的原因,通常是在流程实例完成后删除历史数据时使用。
  12. SUPER_PROCESS_INSTANCE_ID_:超级流程实例ID,记录了当前历史流程实例的超级流程实例的唯一标识符。在流程实例包含子流程时使用。
  13. TENANT_ID_:租户ID,用于多租户环境,表示当前历史流程实例所属的租户。在默认情况下,该字段为空字符串,表示不属于任何特定租户。

需要注意的是,ACT_HI_PROCINST 表记录的是已完成的历史流程实例的信息。当流程实例完成后,与该实例相关的 ACT_HI_PROCINST 记录会被创建,存储有关该流程实例的历史信息。同时,与该流程实例相关的其他运行时数据(如 ACT_RU_EXECUTION 表中的记录)也会被删除,只保留历史数据。

ACT_HI_TASKINST

ACT_HI_TASKINST 是 Flowable 中的历史表之一,用于存储已完成的任务实例的历史信息。每个已完成的任务实例对应于表中的一条记录。它记录了任务的执行信息、任务的持续时间、负责人等信息,是 Flowable 引擎用于保留已完成任务历史数据的重要表之一。

CREATE TABLE `ACT_HI_TASKINST` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT '1',
`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TASK_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TASK_DEF_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PARENT_TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`START_TIME_` datetime(3) NOT NULL,
`CLAIM_TIME_` datetime(3) DEFAULT NULL,
`END_TIME_` datetime(3) DEFAULT NULL,
`DURATION_` bigint DEFAULT NULL,
`DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PRIORITY_` int DEFAULT NULL,
`DUE_DATE_` datetime(3) DEFAULT NULL,
`FORM_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '',
`LAST_UPDATED_TIME_` datetime(3) DEFAULT NULL,
PRIMARY KEY (`ID_`),
KEY `ACT_IDX_HI_TASK_SCOPE` (`SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_HI_TASK_SUB_SCOPE` (`SUB_SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_HI_TASK_SCOPE_DEF` (`SCOPE_DEFINITION_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_HI_TASK_INST_PROCINST` (`PROC_INST_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

以下是表 ACT_HI_TASKINST 中各个字段的含义:

  1. ID_:主键,历史任务实例的唯一标识符。
  2. PROC_DEF_ID_:流程定义ID,记录了历史任务实例所属的流程定义的唯一标识符。
  3. PROC_INST_ID_:流程实例ID,记录了历史任务实例所属的流程实例的唯一标识符。
  4. EXECUTION_ID_:执行ID,记录了历史任务实例所在的执行(Execution)的唯一标识符。
  5. NAME_:任务名称,记录了历史任务实例的名称。
  6. PARENT_TASK_ID_:父任务ID,记录了历史任务实例的父任务的唯一标识符。在子任务和父任务之间建立关联时使用。
  7. DESCRIPTION_:任务描述,记录了历史任务实例的描述信息。
  8. OWNER_:任务所有者,记录了历史任务实例的所有者(拥有人)的唯一标识符。
  9. ASSIGNEE_:任务负责人,记录了历史任务实例的负责人(执行人)的唯一标识符。
  10. START_TIME_:启动时间,记录了历史任务实例的启动时间。
  11. END_TIME_:结束时间,记录了历史任务实例的结束时间。
  12. DURATION_:持续时间,记录了历史任务实例的持续时间(即从启动到结束的时间间隔)。
  13. DELETE_REASON_:删除原因,记录了历史任务实例被删除的原因,通常是在任务完成后删除历史数据时使用。
  14. TASK_DEF_KEY_:任务定义Key,记录了历史任务实例所在的任务定义的Key。
  15. FORM_KEY_:表单键,记录了历史任务实例的表单键(Form Key)。
  16. CATEGORY_:任务分类,记录了历史任务实例的分类信息。
  17. TENANT_ID_:租户ID,用于多租户环境,表示当前历史任务实例所属的租户。在默认情况下,该字段为空字符串,表示不属于任何特定租户。

需要注意的是,ACT_HI_TASKINST 表记录的是已完成的历史任务实例的信息。当任务实例完成后,与该任务实例相关的 ACT_HI_TASKINST 记录会被创建,存储有关该任务实例的历史信息。同时,与该任务实例相关的其他运行时数据(如 ACT_RU_TASK 表中的记录)也会被删除,只保留历史数据。

ACT_HI_VARINST

ACT_HI_VARINST 表是 Flowable 引擎中的历史变量实例表,用于存储流程实例和任务在运行时期间的历史变量信息。该表记录了流程实例和任务的历史变量信息,包括流程变量和任务变量。

CREATE TABLE `ACT_HI_VARINST` (
`ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT '1',
`PROC_INST_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`EXECUTION_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`TASK_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`NAME_` varchar(255) COLLATE utf8mb3_bin NOT NULL,
`VAR_TYPE_` varchar(100) COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`SUB_SCOPE_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_TYPE_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`BYTEARRAY_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`DOUBLE_` double DEFAULT NULL,
`LONG_` bigint DEFAULT NULL,
`TEXT_` varchar(4000) COLLATE utf8mb3_bin DEFAULT NULL,
`TEXT2_` varchar(4000) COLLATE utf8mb3_bin DEFAULT NULL,
`CREATE_TIME_` datetime(3) DEFAULT NULL,
`LAST_UPDATED_TIME_` datetime(3) DEFAULT NULL,
PRIMARY KEY (`ID_`),
KEY `ACT_IDX_HI_PROCVAR_NAME_TYPE` (`NAME_`,`VAR_TYPE_`),
KEY `ACT_IDX_HI_VAR_SCOPE_ID_TYPE` (`SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_HI_VAR_SUB_ID_TYPE` (`SUB_SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_HI_PROCVAR_PROC_INST` (`PROC_INST_ID_`),
KEY `ACT_IDX_HI_PROCVAR_TASK_ID` (`TASK_ID_`),
KEY `ACT_IDX_HI_PROCVAR_EXE` (`EXECUTION_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

下面是 ACT_HI_VARINST 表中各个字段的含义:

  1. ID_:历史变量实例的唯一标识符(主键)。
  2. PROC_INST_ID_:流程实例ID,用于标识该历史变量实例所属的流程实例。
  3. EXECUTION_ID_:执行实例ID,用于标识该历史变量实例所属的执行实例。
  4. TASK_ID_:任务ID,用于标识与该历史变量实例相关联的任务(如果有的话)。
  5. NAME_:变量的名称,用于标识该历史变量实例的变量名。
  6. VAR_TYPE_:变量的类型,用于标识该历史变量实例的变量类型。
  7. REV_:历史变量实例的版本号。
  8. BYTEARRAY_ID_:如果变量的值是二进制数据(例如文件、图片等),则该字段表示对应的二进制数据的ID,关联到 ACT_GE_BYTEARRAY 表。
  9. DOUBLE_:变量的双精度浮点数值。
  10. LONG_:变量的长整型数值。
  11. TEXT_:变量的文本值。
  12. TEXT2_:变量的第二个文本值,用于存储大文本数据。
  13. CREATE_TIME_:变量创建的时间戳。
  14. LAST_UPDATED_TIME_:变量最后更新的时间戳。

ACT_HI_VARINST 表的功能是用于持久化流程实例和任务在运行时期间使用的历史变量信息。这些历史变量信息记录了流程实例和任务在执行过程中的状态和数据,包括流程变量和任务变量。在流程实例执行过程中,每次设置、更新或删除变量时,都会在 ACT_HI_VARINST 表中记录相应的历史变量实例。

需要注意的是,ACT_HI_VARINST 表中的数据是在变量设置、更新或删除时才会记录,因为历史变量实例表用于记录已经发生的变量操作的历史数据。

总结:ACT_HI_VARINST 表是 Flowable 引擎中的历史变量实例表,用于存储流程实例和任务在运行时期间的历史变量信息。该表记录了流程实例和任务在执行过程中的状态和数据,包括流程变量和任务变量。这些历史变量信息可以用于审计、回放和流程分析。

ACT_HI_ATTACHMENT

act_hi_attachment 表是 Flowable 引擎中的历史附件表,用于存储流程实例和任务的历史附件信息。该表记录了流程实例和任务在运行时期间关联的历史附件,例如上传的文件、文档等。这些历史附件信息对于流程的审计和记录非常有用。

CREATE TABLE `ACT_HI_ATTACHMENT` (
`ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT NULL,
`USER_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`NAME_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`DESCRIPTION_` varchar(4000) COLLATE utf8mb3_bin DEFAULT NULL,
`TYPE_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`TASK_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`PROC_INST_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`URL_` varchar(4000) COLLATE utf8mb3_bin DEFAULT NULL,
`CONTENT_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`TIME_` datetime(3) DEFAULT NULL,
PRIMARY KEY (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

下面是 act_hi_attachment 表中各个字段的含义:

  1. ID_:历史附件的唯一标识符(主键)。
  2. REV_:历史附件记录的版本号。
  3. USER_ID_:上传附件的用户ID,表示执行上传附件操作的用户。
  4. NAME_:附件的名称,用于标识附件的名称。
  5. DESCRIPTION_:附件的描述,用于记录对附件的描述信息。
  6. TYPE_:附件的类型,用于标识附件的文件类型。
  7. TASK_ID_:任务ID,用于标识与该历史附件关联的任务(如果有的话)。
  8. PROC_INST_ID_:流程实例ID,用于标识与该历史附件关联的流程实例。
  9. URL_:附件的URL,表示附件在存储系统中的位置。
  10. CONTENT_ID_:附件内容的ID,关联到 act_ge_bytearray 表中的 ID_ 字段。
  11. TIME_:附件上传时间戳,表示附件的上传时间。

act_hi_attachment 表的功能是用于持久化流程实例和任务在运行时期间关联的历史附件信息。每个历史附件记录对应了一个上传的附件,可以是流程实例级别的附件(关联到流程实例)或任务级别的附件(关联到任务)。历史附件表记录了附件的名称、描述、类型、上传时间等信息,并通过 URL_ 字段指向实际附件在存储系统中的位置。

需要注意的是,act_hi_attachment 表中的数据是在上传附件时才会记录,因为历史附件表用于记录已经发生的附件操作的历史数据。

总结:act_hi_attachment 表是 Flowable 引擎中的历史附件表,用于存储流程实例和任务的历史附件信息。该表记录了上传的附件的名称、描述、类型、上传时间等信息,并通过 URL_ 字段指向实际附件在存储系统中的位置。这些历史附件信息对于流程的审计和记录非常有用。

ACT_HI_IDENTITYLINK

ACT_HI_IDENTITYLINK 表是 Flowable 引擎中的历史身份关联表,用于存储流程实例和任务在运行时期间的历史身份关联信息。该表记录了流程实例和任务与用户、用户组或者其他实体的历史身份关联,包括候选人、受邀请人、拥有者等身份关联信息。

CREATE TABLE `ACT_HI_IDENTITYLINK` (
`ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL,
`GROUP_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`TYPE_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`USER_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`TASK_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`CREATE_TIME_` datetime(3) DEFAULT NULL,
`PROC_INST_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`SUB_SCOPE_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_TYPE_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_DEFINITION_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
PRIMARY KEY (`ID_`),
KEY `ACT_IDX_HI_IDENT_LNK_USER` (`USER_ID_`),
KEY `ACT_IDX_HI_IDENT_LNK_SCOPE` (`SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_HI_IDENT_LNK_SUB_SCOPE` (`SUB_SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_HI_IDENT_LNK_SCOPE_DEF` (`SCOPE_DEFINITION_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_HI_IDENT_LNK_TASK` (`TASK_ID_`),
KEY `ACT_IDX_HI_IDENT_LNK_PROCINST` (`PROC_INST_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

下面是 ACT_HI_IDENTITYLINK 表中各个字段的含义:

  1. ID_:历史身份关联的唯一标识符(主键)。
  2. TYPE_:身份关联类型,用于标识历史身份关联的类型。常见的类型有以下几种:
    • participant:参与者,表示任务的执行人或候选人。
    • starter:流程实例发起者。
    • identityLink:通用身份关联类型,可用于其他自定义类型。
  3. USER_ID_:与历史身份关联相关联的用户ID。如果是参与者或拥有者,则表示用户的ID。
  4. GROUP_ID_:与历史身份关联相关联的用户组ID。如果是候选人,则表示用户组的ID。
  5. TASK_ID_:任务ID,用于标识与该历史身份关联关联的任务。
  6. PROC_INST_ID_:流程实例ID,用于标识与该历史身份关联关联的流程实例。
  7. TIME_:历史身份关联发生的时间戳。

ACT_HI_IDENTITYLINK 表的功能是用于持久化流程实例和任务在运行时期间的历史身份关联信息。每个历史身份关联记录对应了流程实例或任务与用户、用户组或者其他实体之间的关联关系。这些身份关联信息记录了参与者、候选人、发起者等身份信息,并记录了身份关联发生的时间。

需要注意的是,ACT_HI_IDENTITYLINK 表中的数据是在身份关联发生时才会记录,因为历史身份关联表用于记录已经发生的身份关联操作的历史数据。

总结:ACT_HI_IDENTITYLINK 表是 Flowable 引擎中的历史身份关联表,用于存储流程实例和任务在运行时期间的历史身份关联信息。该表记录了参与者、候选人、发起者等身份信息,并记录了身份关联发生的时间。这些历史身份关联信息对于流程的审计和记录非常有用。

  • act_hi_actinst:历史节点表,存放流程实例运转的各个节点信息(包含开始、结束等非任务节点);
  • act_hi_detail:历史详情表,存储节点运转的一些信息(不常用);

1.3 用户相关表

IdentityService接口操作的表

  • act_id_group:用户组信息表,对应节点选定候选组信息;
  • act_id_info:用户扩展信息表,存储用户扩展信息;
  • act_id_membership:用户与用户组关系表;
  • act_id_user:用户信息表,对应节点选定办理人或候选人信息;

1.4 流程定义、流程模板相关表

RepositoryService接口操作的表

ACT_RE_DEPLOYMENT

部署信息表,存储流程定义、模板部署信息

CREATE TABLE `ACT_RE_DEPLOYMENT` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '',
`DEPLOY_TIME_` timestamp(3) NULL DEFAULT NULL,
`DERIVED_FROM_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DERIVED_FROM_ROOT_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PARENT_DEPLOYMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`ENGINE_VERSION_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
PRIMARY KEY (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

在Flowable中,ACT_RE_DEPLOYMENT表是用于存储流程部署(Deployment)相关的信息。每当你部署一个新的流程定义时,Flowable会将相关的信息记录在ACT_RE_DEPLOYMENT表中。让我们介绍一下ACT_RE_DEPLOYMENT表中的各个字段的含义:

  1. ID_: 流程部署的唯一标识符,通常是一个UUID。
  2. NAME_: 流程部署的名称,通常用于描述部署的用途或目的。
  3. CATEGORY_: 流程部署的类别,可以用于对部署进行分类。例如,可以将同一类别的流程定义归为一组。
  4. KEY_: 流程部署的键,是流程定义的唯一标识符。在部署多个版本的同一流程定义时,它们将具有相同的KEY_,但VERSION_字段将区分它们。
  5. TENANT_ID_: 租户ID,用于多租户场景,标识流程部署所属的租户。如果未使用多租户功能,则此字段通常为空。
  6. DEPLOY_TIME_: 流程部署的时间戳,表示流程部署的时间。
  7. ENGINE_VERSION_: 使用的Flowable引擎的版本号。
  8. PARENT_DEPLOYMENT_ID_: 如果这个流程部署是另一个流程部署的附属部署(例如,使用BPMN子流程),则该字段指示父流程部署的ID。

总结: ACT_RE_DEPLOYMENT表记录了每个流程部署的相关信息,包括流程部署的唯一标识符、名称、类别、键、租户ID、部署时间、Flowable引擎版本等。通过这个表,可以查看和管理Flowable中已部署的流程定义。

ACT_RE_MODEL

流程模板信息表,存储流程模板相关描述信息,流程定义的bpmn文件放在act_ge_bytearray表中,以字节形式存储

CREATE TABLE `ACT_RE_MODEL` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT NULL,
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
`LAST_UPDATE_TIME_` timestamp(3) NULL DEFAULT NULL,
`VERSION_` int DEFAULT NULL,
`META_INFO_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`EDITOR_SOURCE_VALUE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`EDITOR_SOURCE_EXTRA_VALUE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '',
PRIMARY KEY (`ID_`),
KEY `ACT_FK_MODEL_SOURCE` (`EDITOR_SOURCE_VALUE_ID_`),
KEY `ACT_FK_MODEL_SOURCE_EXTRA` (`EDITOR_SOURCE_EXTRA_VALUE_ID_`),
KEY `ACT_FK_MODEL_DEPLOYMENT` (`DEPLOYMENT_ID_`),
CONSTRAINT `ACT_FK_MODEL_DEPLOYMENT` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `ACT_RE_DEPLOYMENT` (`ID_`),
CONSTRAINT `ACT_FK_MODEL_SOURCE` FOREIGN KEY (`EDITOR_SOURCE_VALUE_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),
CONSTRAINT `ACT_FK_MODEL_SOURCE_EXTRA` FOREIGN KEY (`EDITOR_SOURCE_EXTRA_VALUE_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

在Flowable中,ACT_RE_MODEL表是用于存储流程模型(BPMN模型)相关信息的表。它记录了每个流程模型的元数据和配置信息,以便在Flowable引擎中执行流程时进行参考和解析。让我们介绍一下ACT_RE_MODEL表中的各个字段的含义:

  1. ID_: 流程模型的唯一标识符,通常是一个UUID。

  2. REV_: 流程模型的版本号,每次保存或更新流程模型都会增加版本号。

  3. NAME_: 流程模型的名称,用于描述流程模型的用途或目的。

  4. KEY_: 流程模型的键,是流程定义的唯一标识符。在部署多个版本的同一流程模型时,它们将具有相同的KEY_,但VERSION_字段将区分它们。

  5. CATEGORY_: 流程模型的类别,可以用于对模型进行分类。

  6. CREATE_TIME_: 流程模型的创建时间,表示流程模型创建的时间戳。

  7. LAST_UPDATE_TIME_: 流程模型的最后更新时间,表示流程模型最后一次更新的时间戳。

  8. VERSION_: 流程模型的版本,每次保存或更新流程模型都会增加版本号。

  9. META_INFO_: 流程模型的元信息,通常是一个JSON格式的字符串,用于存储模型的一些额外信息。

  10. DEPLOYMENT_ID_: 流程模型所属的流程部署的ID,用于将流程模型和流程部署关联起来。

    ACT_RE_DEPLOYMENT表中的每条记录表示一个流程部署,而ACT_RE_MODEL表中的每条记录表示一个流程模型,一个流程部署可以包含多个流程模型,一个流程模型只隶属于一个流程部署。

    ACT_RE_MODEL表中的DEPLOYMENT_ID_字段:是用于关联流程模型(ACT_RE_MODEL)和流程部署(ACT_RE_DEPLOYMENT)的字段。当将一个流程定义部署到Flowable引擎时,引擎会为该部署生成一个唯一的ID,并将这个ID关联到ACT_RE_MODEL表中的DEPLOYMENT_ID_字段,以标识该流程模型隶属于哪个流程部署。

  11. EDITOR_SOURCE_VALUE_ID_:编辑器源值ID,记录了与流程模型相关联的 BPMN XML 数据在 ACT_GE_BYTEARRAY 表中的ID。该字段与模型的 BPMN XML 数据之间建立了关联。

  12. EDITOR_SOURCE_EXTRA_VALUE_ID_:编辑器附加源值ID,记录了与流程模型相关联的额外数据在 ACT_GE_BYTEARRAY 表中的ID。在某些情况下,可能需要存储与模型相关的附加数据,此字段允许将附加数据与模型关联起来。

总结: ACT_RE_MODEL表记录了每个流程模型的相关信息,包括唯一标识符、版本号、名称、键、类别、创建时间、最后更新时间、版本、元信息等。通过这个表,Flowable引擎可以查找和解析流程模型,以便在流程执行时使用相应的流程定义。

ACT_RE_PROCDEF

流程定义信息表,存储流程定义相关描述信息,流程定义的bpmn文件放在act_ge_bytearray表中,以字节形式存储;

CREATE TABLE `ACT_RE_PROCDEF` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT NULL,
`CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`VERSION_` int NOT NULL,
`DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`RESOURCE_NAME_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DGRM_RESOURCE_NAME_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`HAS_START_FORM_KEY_` tinyint DEFAULT NULL,
`HAS_GRAPHICAL_NOTATION_` tinyint DEFAULT NULL,
`SUSPENSION_STATE_` int DEFAULT NULL,
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '',
`ENGINE_VERSION_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DERIVED_FROM_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DERIVED_FROM_ROOT_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DERIVED_VERSION_` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID_`),
UNIQUE KEY `ACT_UNIQ_PROCDEF` (`KEY_`,`VERSION_`,`DERIVED_VERSION_`,`TENANT_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

在Flowable中,ACT_RE_PROCDEF表是用于存储流程定义(Process Definition)相关的信息。每当你部署一个流程定义时,Flowable会将相关信息记录在ACT_RE_PROCDEF表中。让我们介绍一下ACT_RE_PROCDEF表中的各个字段的含义:

  1. ID_: 流程定义的唯一标识符,通常是一个UUID。

  2. REV_: 流程定义的版本号,表示流程定义的版本。每当你更新保存流程定义时,版本号将会增加。

  3. CATEGORY_: 流程定义的类别,可以用于对流程定义进行分类。例如,将相同类别的流程定义归为一组。

  4. NAME_: 流程定义的名称,用于描述流程定义的名称或用途。

  5. KEY_: 流程定义的键,是流程定义的唯一标识符。在部署多个版本的同一流程定义时,它们将具有相同的KEY_,但REV_字段将区分它们。

  6. VERSION_: 流程定义的版本,表示流程定义的当前版本。

  7. DEPLOYMENT_ID_: 流程定义所属的部署ID,即与该流程定义关联的ACT_RE_DEPLOYMENT表中的ID_字段。

    ACT_RE_DEPLOYMENT表和ACT_RE_PROCDEF是怎么关联的?

    ACT_RE_DEPLOYMENT表和ACT_RE_PROCDEF表是通过DEPLOYMENT_ID_字段进行关联的。在Flowable中,DEPLOYMENT_ID_字段是用来标识一个流程定义所属的部署ID。当你部署一个流程定义时,Flowable会生成一个唯一的部署ID,并将该ID关联到对应的流程定义记录中,存储在ACT_RE_PROCDEF表的DEPLOYMENT_ID_字段中。

    具体来说:

    1. ACT_RE_DEPLOYMENT表中的ID_字段:是流程部署的唯一标识符,通常是一个UUID。
    2. ACT_RE_PROCDEF表中的DEPLOYMENT_ID_字段:是用于关联流程定义和流程部署的字段。当你部署一个流程定义时,Flowable会为该部署生成一个唯一的部署ID,并将这个ID关联到ACT_RE_PROCDEF表中的DEPLOYMENT_ID_字段,以标识该流程定义隶属于哪个流程部署。

    通过DEPLOYMENT_ID_字段的关联,ACT_RE_PROCDEF表中的每条记录表示一个流程定义,而ACT_RE_DEPLOYMENT表中的每条记录表示一个流程部署,一个流程部署可以包含多个流程定义。这样就建立了流程部署和流程定义之间的关联,可以根据DEPLOYMENT_ID_字段来查询流程部署相关的所有流程定义。

  8. RESOURCE_NAME_: 流程定义的资源文件名,通常是BPMN文件的名称。

  9. DGRM_RESOURCE_NAME_: 流程定义的图形资源文件名,通常是BPMN文件对应的流程图文件名。

  10. DESCRIPTION_: 流程定义的描述信息,用于描述流程定义的具体内容。

  11. HAS_START_FORM_KEY_: 表示该流程定义是否有启动表单(Start Form)。如果有启动表单,则值为1;如果没有启动表单,则值为0。

  12. SUSPENSION_STATE_: 流程定义的挂起状态,表示流程定义是否被挂起。如果流程定义被挂起,则值为2;如果流程定义处于激活状态,则值为1。

总结: ACT_RE_PROCDEF表记录了每个流程定义的相关信息,包括唯一标识符、版本号、类别、名称、键、版本、部署ID、资源文件名、图形资源文件名、描述信息、启动表单信息以及挂起状态等。通过这个表,可以查看和管理Flowable中已部署的流程定义,包括版本管理、分类管理、部署信息等。

1.5 流程运行时表

RuntimeService,taskService接口操作的表

ACT_RU_TASK

运行时流程任务节点表,存储运行中流程的任务节点信息,重要,常用于查询人员或部门的待办任务时使用;

CREATE TABLE `ACT_RU_TASK` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT NULL,
`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TASK_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PARENT_TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TASK_DEF_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`DELEGATION_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PRIORITY_` int DEFAULT NULL,
`CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
`DUE_DATE_` datetime(3) DEFAULT NULL,
`CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SUSPENSION_STATE_` int DEFAULT NULL,
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '',
`FORM_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`CLAIM_TIME_` datetime(3) DEFAULT NULL,
`IS_COUNT_ENABLED_` tinyint DEFAULT NULL,
`VAR_COUNT_` int DEFAULT NULL,
`ID_LINK_COUNT_` int DEFAULT NULL,
`SUB_TASK_COUNT_` int DEFAULT NULL,
PRIMARY KEY (`ID_`),
KEY `ACT_IDX_TASK_CREATE` (`CREATE_TIME_`),
KEY `ACT_IDX_TASK_SCOPE` (`SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_TASK_SUB_SCOPE` (`SUB_SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_TASK_SCOPE_DEF` (`SCOPE_DEFINITION_ID_`,`SCOPE_TYPE_`),
KEY `ACT_FK_TASK_EXE` (`EXECUTION_ID_`),
KEY `ACT_FK_TASK_PROCINST` (`PROC_INST_ID_`),
KEY `ACT_FK_TASK_PROCDEF` (`PROC_DEF_ID_`),
CONSTRAINT `ACT_FK_TASK_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),
CONSTRAINT `ACT_FK_TASK_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
CONSTRAINT `ACT_FK_TASK_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

在Flowable中,ACT_RU_TASK是一个重要的运行时任务表,用于存储正在运行的任务实例。该表中的各个字段记录了与任务相关的信息。以下是对ACT_RU_TASK表中一些主要字段的解释:

  1. ID_: 任务实例的唯一标识,通常采用UUID或类似的方式生成。

  2. REV_: 数据的版本号,用于乐观锁控制并发访问。

  3. EXECUTION_ID_: 引用ACT_RU_EXECUTION表中的ID_字段,表示任务所属的执行流程实例。

  4. PROC_INST_ID_: 引用ACT_RU_EXECUTION表中的PROC_INST_ID_字段,表示任务所属的流程实例。

  5. NAME_: 任务的名称,通常是任务节点的名称,例如"审批"或"填写报告"等。

  6. PARENT_TASK_ID_: 如果当前任务是子任务,该字段引用了父任务的ID_。

  7. DESCRIPTION_: 对任务的描述,可以是任务的额外说明或备注信息。

  8. TASK_DEF_KEY_: 引用ACT_RE_PROCDEF表中的KEY_字段,表示当前任务节点的唯一标识。

  9. OWNER_: 任务的所有者,即负责完成任务的用户或组。

  10. ASSIGNEE_: 任务的受让人,表示当前负责执行任务的用户。

  11. DELEGATION_: 表示委派的状态,用于标识任务是否被委派给其他用户。

    DELEGATION_字段的值对应了DelegationState枚举的常量值,其中包括:

    • PENDING: 表示任务处于委派待处理状态。
    • RESOLVED: 表示任务委派已解决状态。
    • PENDING_REMOVAL: 表示任务委派等待移除状态。

    通过调用task.getDelegationState()方法,可以获取当前任务的委派状态,然后根据不同的委派状态执行相应的处理逻辑。

  12. PRIORITY_: 任务的优先级,用于设置任务的紧急程度。

  13. CREATE_TIME_: 任务的创建时间,记录任务被创建的时间戳。

  14. DUE_DATE_: 任务的截止日期,表示任务应该在该日期之前完成。

  15. CATEGORY_: 任务的分类,可用于对任务进行归类或过滤。

  16. SUSPENSION_STATE_: 表示任务的挂起状态,用于暂停或恢复任务的执行。

  17. TENANT_ID_: 表示任务所属的租户ID,用于多租户场景中对任务的隔离。

以上是ACT_RU_TASK表中的一些主要字段及其含义,这些字段记录了流程引擎中运行时任务的关键信息,帮助引擎控制任务的执行和管理。请注意,Flowable的版本可能有所不同,因此某些字段可能在特定版本中不存在或具有不同的含义。

ACT_RU_ACTINST

ACT_RU_ACTINST 是 Flowable 中用于运行时存储流程实例的执行信息的表。它记录了正在执行中的流程实例的每个活动(Activity)的运行状态和相关信息。每个活动对应流程模型中的一个节点,可以是用户任务、服务任务、排他网关等。

CREATE TABLE `ACT_RU_ACTINST` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT '1',
`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`CALL_PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`ACT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`ACT_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`START_TIME_` datetime(3) NOT NULL,
`END_TIME_` datetime(3) DEFAULT NULL,
`DURATION_` bigint DEFAULT NULL,
`TRANSACTION_ORDER_` int DEFAULT NULL,
`DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '',
PRIMARY KEY (`ID_`),
KEY `ACT_IDX_RU_ACTI_START` (`START_TIME_`),
KEY `ACT_IDX_RU_ACTI_END` (`END_TIME_`),
KEY `ACT_IDX_RU_ACTI_PROC` (`PROC_INST_ID_`),
KEY `ACT_IDX_RU_ACTI_PROC_ACT` (`PROC_INST_ID_`,`ACT_ID_`),
KEY `ACT_IDX_RU_ACTI_EXEC` (`EXECUTION_ID_`),
KEY `ACT_IDX_RU_ACTI_EXEC_ACT` (`EXECUTION_ID_`,`ACT_ID_`),
KEY `ACT_IDX_RU_ACTI_TASK` (`TASK_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

下面详细介绍表 ACT_RU_ACTINST 中各个字段的含义:

  1. ID_:主键,流程实例活动的唯一标识符。
  2. REV_:版本号,用于乐观锁机制,记录了数据的版本。
  3. PROC_DEF_ID_:流程定义ID,记录了流程实例所属的流程定义的唯一标识符。
  4. PROC_INST_ID_:流程实例ID,记录了流程实例的唯一标识符。
  5. EXECUTION_ID_:执行ID,记录了与活动执行相关联的唯一标识符。每个活动执行对应一个流程实例执行。
  6. ACT_ID_:活动ID,记录了活动的唯一标识符,对应流程模型中的节点ID。
  7. TASK_ID_:任务ID,记录了与活动关联的任务的唯一标识符。如果活动是用户任务,则该字段表示用户任务的ID。
  8. CALL_PROC_INST_ID_:调用流程实例ID,用于记录引用的调用流程实例的ID。在子流程调用时使用。
  9. ACT_NAME_:活动名称,记录了活动的名称,对应流程模型中节点的名称。
  10. ACT_TYPE_:活动类型,记录了活动的类型,比如用户任务、服务任务、排他网关等。
  11. ASSIGNEE_:受让人,用于记录用户任务的受让人(负责人),表示当前活动的执行人。
  12. START_TIME_:开始时间,记录了活动的开始时间戳。
  13. END_TIME_:结束时间,记录了活动的结束时间戳。
  14. DURATION_:持续时间,用于记录活动的持续时间,即从开始时间到结束时间的时间间隔。
  15. TENANT_ID_:租户ID,用于多租户环境,表示该活动所属的租户。在默认情况下,该字段为空字符串,表示不属于任何特定租户。

需要注意的是,表 ACT_RU_ACTINST 记录的是正在执行中的流程实例的活动信息,它包含了流程实例的当前状态。当流程实例完成时,与该实例相关的 ACT_RU_ACTINST 记录将会被删除,并且相应的信息将会转移到历史表 ACT_HI_ACTINST 中。

ACT_RU_EXECUTION

运行时流程执行实例表,记录运行中流程运行的各个分支信息(当没有子流程时,其数据与act_ru_task表数据是一一对应的);

CREATE TABLE `ACT_RU_EXECUTION` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT NULL,
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`BUSINESS_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PARENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`SUPER_EXEC_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`ROOT_PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`IS_ACTIVE_` tinyint DEFAULT NULL,
`IS_CONCURRENT_` tinyint DEFAULT NULL,
`IS_SCOPE_` tinyint DEFAULT NULL,
`IS_EVENT_SCOPE_` tinyint DEFAULT NULL,
`IS_MI_ROOT_` tinyint DEFAULT NULL,
`SUSPENSION_STATE_` int DEFAULT NULL,
`CACHED_ENT_STATE_` int DEFAULT NULL,
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '',
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`START_ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`START_TIME_` datetime(3) DEFAULT NULL,
`START_USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`LOCK_TIME_` timestamp(3) NULL DEFAULT NULL,
`LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`IS_COUNT_ENABLED_` tinyint DEFAULT NULL,
`EVT_SUBSCR_COUNT_` int DEFAULT NULL,
`TASK_COUNT_` int DEFAULT NULL,
`JOB_COUNT_` int DEFAULT NULL,
`TIMER_JOB_COUNT_` int DEFAULT NULL,
`SUSP_JOB_COUNT_` int DEFAULT NULL,
`DEADLETTER_JOB_COUNT_` int DEFAULT NULL,
`EXTERNAL_WORKER_JOB_COUNT_` int DEFAULT NULL,
`VAR_COUNT_` int DEFAULT NULL,
`ID_LINK_COUNT_` int DEFAULT NULL,
`CALLBACK_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`CALLBACK_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`REFERENCE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`REFERENCE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`BUSINESS_STATUS_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
PRIMARY KEY (`ID_`),
KEY `ACT_IDX_EXEC_BUSKEY` (`BUSINESS_KEY_`),
KEY `ACT_IDC_EXEC_ROOT` (`ROOT_PROC_INST_ID_`),
KEY `ACT_IDX_EXEC_REF_ID_` (`REFERENCE_ID_`),
KEY `ACT_FK_EXE_PROCINST` (`PROC_INST_ID_`),
KEY `ACT_FK_EXE_PARENT` (`PARENT_ID_`),
KEY `ACT_FK_EXE_SUPER` (`SUPER_EXEC_`),
KEY `ACT_FK_EXE_PROCDEF` (`PROC_DEF_ID_`),
CONSTRAINT `ACT_FK_EXE_PARENT` FOREIGN KEY (`PARENT_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE,
CONSTRAINT `ACT_FK_EXE_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
CONSTRAINT `ACT_FK_EXE_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `ACT_FK_EXE_SUPER` FOREIGN KEY (`SUPER_EXEC_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

当您在Flowable引擎中运行流程时,ACT_RU_EXECUTION表是非常重要的表之一。它用于记录流程实例的运行时执行信息,每当流程进入一个新的节点时,都会在该表中创建一个新的执行记录。以下是ACT_RU_EXECUTION表中一些主要字段的解释:

  1. ID_: 执行实例的唯一标识,通常采用UUID或类似的方式生成。

  2. REV_: 数据的版本号,用于乐观锁控制并发访问。

  3. PROC_INST_ID_: 流程实例的唯一标识,引用ACT_RU_EXECUTION表中的ID_字段。在整个流程实例的生命周期内,该字段保持不变,标识特定流程实例的所有执行实例。

  4. BUSINESS_KEY_: 流程实例的业务关键字,通常是与流程实例相关的业务标识,便于与外部业务系统关联。

  5. PARENT_ID_: 当前执行实例的父执行实例ID,用于支持子流程和嵌套流程的执行。

  6. PROC_DEF_ID_: 引用ACT_RE_PROCDEF表中的ID_字段,表示当前执行实例所属的流程定义。

  7. SUPER_EXEC_: 引用ACT_RU_EXECUTION表中的ID_字段,表示当前执行实例的超级执行实例ID。

  8. ACT_ID_: 执行实例当前所处的活动节点ID,表示流程引擎当前所在的节点。

  9. IS_ACTIVE_: 标识执行实例是否处于活动状态。如果流程实例已经完成或暂停,则该字段为false。

  10. IS_CONCURRENT_: 标识执行实例是否是一个并行执行实例。

  11. IS_SCOPE_: 标识执行实例是否是一个新的范围。在子流程或嵌套流程中使用。

  12. IS_EVENT_SCOPE_: 标识执行实例是否是一个事件范围。在事件子流程中使用。

  13. IS_MI_ROOT_: 标识执行实例是否是一个多实例子流程的根执行实例。

  14. SUSPENSION_STATE_: 表示执行实例的挂起状态,用于暂停或恢复执行实例的执行。

  15. CACHED_ENT_STATE_: 缓存的实体状态,用于优化引擎性能。

  16. TENANT_ID_: 表示执行实例所属的租户ID,用于多租户场景中对执行实例的隔离。

ACT_RU_EXECUTION表中的这些字段记录了流程实例的运行时状态和执行信息。在流程执行期间,引擎会根据流程定义的结构创建和更新执行实例,并根据当前的执行实例来驱动流程的进行。这些信息对于流程引擎的执行管理和控制是至关重要的。请注意,Flowable的版本可能有所不同,因此某些字段可能在特定版本中不存在或具有不同的含义。

ACT_RU_EXECUTION表中的ID_和PROC_INST_ID_有什么不同?

在Flowable的ACT_RU_EXECUTION表中,ID_和PROC_INST_ID_是两个不同的字段,它们在表示的含义和作用上有明显的区别:

  1. ID_: ID_字段是执行实例(Execution)的唯一标识。每当流程进入一个新的节点或子流程时,都会在ACT_RU_EXECUTION表中创建一个新的执行实例记录,并为该记录生成一个唯一的ID_值。执行实例代表流程中的一个活动实例,它可以是一个流程节点、一个子流程的实例或一个并行网关的分支实例。

  2. PROC_INST_ID_: PROC_INST_ID_字段是流程实例(Process Instance)的唯一标识。一个流程实例代表一次具体的流程执行,它由引擎在流程启动时创建,并在整个流程执行期间保持不变。每个流程实例在ACT_RU_EXECUTION表中对应一个或多个执行实例(ID_字段),其中一个执行实例是流程实例的根执行实例。

简单来说,ID_是执行实例的唯一标识,而PROC_INST_ID_是流程实例的唯一标识。一个流程实例可以包含一个或多个执行实例,每个执行实例代表流程中的一个节点或分支。流程实例是流程的整体执行过程,而执行实例是流程中具体每个活动实例的表示。

举例说明:
假设有一个请假流程,当员工提交请假申请后,引擎会创建一个新的流程实例(PROC_INST_ID_),代表这次请假申请的整个执行过程。然后,流程可能经过"填写请假表单"节点、"经理审批"节点和"人事审批"节点。在ACT_RU_EXECUTION表中,每经过一个节点,都会创建一个新的执行实例(ID_),每个执行实例都有自己的ID_和对应的节点信息。

总结:

  • PROC_INST_ID_是流程实例的唯一标识,代表整个流程的执行过程。
  • ID_是执行实例的唯一标识,代表流程中每个具体的节点实例或分支实例。每个流程实例都有一个根执行实例,其他执行实例都与该根执行实例关联。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s3BKgSU6-1690858562910)(/Users/yujky/Library/Mobile Documents/comappleCloudDocs/markdown/img/image-20230731090030345.png)]

  • act_ru_event_subscr:监听信息表,不常用;
  • act_ru_identitylink:运行时流程人员表,重要,常用于查询人员或部门的待办任务时使用;
  • act_ru_job:运行时定时任务数据表,存储流程的定时任务信息;
  • act_ru_variable:运行时流程变量数据表,存储运行中的流程各节点的变量信息;
ACT_RU_VARIABLE

ACT_RU_VARIABLE 表是 Flowable 引擎中的运行时变量表,用于存储流程实例和任务在运行时期间所使用的变量信息。该表记录了流程实例和任务的运行时变量,包括流程变量和任务变量。

CREATE TABLE `ACT_RU_VARIABLE` (
`ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL,
`REV_` int DEFAULT NULL,
`TYPE_` varchar(255) COLLATE utf8mb3_bin NOT NULL,
`NAME_` varchar(255) COLLATE utf8mb3_bin NOT NULL,
`EXECUTION_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`PROC_INST_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`TASK_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`SUB_SCOPE_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`SCOPE_TYPE_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`BYTEARRAY_ID_` varchar(64) COLLATE utf8mb3_bin DEFAULT NULL,
`DOUBLE_` double DEFAULT NULL,
`LONG_` bigint DEFAULT NULL,
`TEXT_` varchar(4000) COLLATE utf8mb3_bin DEFAULT NULL,
`TEXT2_` varchar(4000) COLLATE utf8mb3_bin DEFAULT NULL,
PRIMARY KEY (`ID_`),
KEY `ACT_IDX_RU_VAR_SCOPE_ID_TYPE` (`SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_IDX_RU_VAR_SUB_ID_TYPE` (`SUB_SCOPE_ID_`,`SCOPE_TYPE_`),
KEY `ACT_FK_VAR_BYTEARRAY` (`BYTEARRAY_ID_`),
KEY `ACT_IDX_VARIABLE_TASK_ID` (`TASK_ID_`),
KEY `ACT_FK_VAR_EXE` (`EXECUTION_ID_`),
KEY `ACT_FK_VAR_PROCINST` (`PROC_INST_ID_`),
CONSTRAINT `ACT_FK_VAR_BYTEARRAY` FOREIGN KEY (`BYTEARRAY_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),
CONSTRAINT `ACT_FK_VAR_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),
CONSTRAINT `ACT_FK_VAR_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;

下面是 ACT_RU_VARIABLE 表中各个字段的含义:

  1. ID_:变量的唯一标识符(主键)。
  2. REV_:记录的版本号。
  3. TYPE_:变量的类型,指示变量值的数据类型,例如字符串、整数等。
  4. NAME_:变量的名称,用于标识变量。
  5. EXECUTION_ID_:与流程实例或执行实例相关联的执行实例ID, ACT_RU_EXECUTION表的ID_
  6. PROC_INST_ID_:与流程实例相关联的流程实例ID, ACT_RU_EXECUTION表的PROC_INST_ID_
  7. TASK_ID_:与任务相关联的任务ID。如果变量是任务变量,则该字段表示与变量相关的任务ID。
  8. BYTEARRAY_ID_:如果变量的值是二进制数据(例如文件、图片等),则该字段表示对应的二进制数据的ID,关联到 ACT_GE_BYTEARRAY 表。
  9. DOUBLE_:变量的双精度浮点数值。
  10. LONG_:变量的长整型数值。
  11. TEXT_:变量的文本值。
  12. TEXT2_:变量的第二个文本值,用于存储大文本数据。
  13. CREATE_TIME_:变量创建的时间戳。
  14. LAST_UPDATED_TIME_:变量最后更新的时间戳。

ACT_RU_VARIABLE 表的功能是用于持久化流程实例和任务在运行时期间使用的变量。这些变量可以是任意类型的数据,包括基本类型(整数、字符串、浮点数等)以及复杂类型(Java 对象、集合等)。通过在流程实例或任务上设置这些变量,可以在流程执行过程中传递数据和状态信息,从而影响流程的行为和走向。

Flowable 引擎提供了一系列的 API 来管理和操作运行时变量,例如 RuntimeServiceTaskService 中的相关方法,可以用来设置、获取和删除流程实例和任务的变量。

总结:ACT_RU_VARIABLE 表用于存储流程实例和任务在运行时期间的变量信息,包括流程变量和任务变量。这些变量可以影响流程的行为和走向,通过相关的 API 可以对这些变量进行管理和操作。

2. flowable中的知识点

2.1 FlowElement

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wf6km8sW-1690858562911)(/Users/yujky/Library/Mobile Documents/comappleCloudDocs/markdown/img/image-20230730234037116.png)]

在 Flowable 中,FlowElement 是一个抽象类,它的直接子类包含了 BPMN 2.0 规范中定义的所有基本流程元素类型。以下是 Flowable 中 FlowElement 的所有子类型(基本流程元素类型):

  1. StartEvent:开始事件,用于标识流程的开始点。

  2. EndEvent:结束事件,用于标识流程的结束点。

  3. UserTask:用户任务,用于定义由用户执行的任务节点。

  4. ServiceTask:服务任务,用于执行业务逻辑或调用外部服务。

  5. ScriptTask:脚本任务,用于执行脚本语言(如 JavaScript、Groovy)中的逻辑。

  6. BusinessRuleTask:业务规则任务,用于执行业务规则(Drools、DMN 等)。

  7. ReceiveTask:接收任务,用于等待接收外部消息或信号。

  8. ManualTask:手动任务,用于在流程中需要手动干预的任务。

  9. SendTask:发送任务,用于发送外部消息或信号。

  10. IntermediateCatchEvent:中间捕获事件,用于在流程执行期间捕获事件触发。

  11. IntermediateThrowEvent:中间抛出事件,用于在流程执行期间抛出事件。

  12. IntermediateBoundaryEvent:边界事件,用于与其他任务或子流程关联的事件。

  13. ExclusiveGateway:排他网关,用于实现分支和合并的条件控制。

  14. InclusiveGateway:包容网关,用于并行和合并多个分支。

  15. ParallelGateway:并行网关,用于实现并行流程分支和合并。

  16. EventBasedGateway:事件网关,用于基于事件触发的分支和合并。

  17. SequenceFlow:连线,用于连接不同活动节点,定义了流程的执行顺序。

    在 Flowable 中,SequenceFlowFlowElement 的一个子类型,用于表示流程模型中的连线(Sequence Flow)。SequenceFlow 用于连接不同的活动(FlowNode),将一个活动的输出路径与下一个活动的输入路径关联起来,从而定义了流程的执行顺序。

除了上述基本流程元素类型,Flowable 还支持扩展和自定义其他类型的流程元素,例如边界定时器事件、信号事件等。这些基本流程元素可以组合在一起形成复杂的业务流程,并通过定义它们之间的连线和条件来控制流程的流转。

2.2 deploymentBuilder.deploy()

DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
.......
deploymentBuilder.deploy();

这两句代码是使用 Flowable 中的 RepositoryService 接口进行流程部署的过程,用于将流程定义部署到 Flowable 引擎中以供执行。下面对这两句代码的含义进行解释:

  1. DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
    • 首先,通过 repositoryService.createDeployment() 方法创建了一个 DeploymentBuilder 对象。DeploymentBuilder 用于构建流程部署,并提供了一系列方法用于设置部署的相关属性和内容。
  2. deploymentBuilder.deploy();
    • 接下来,调用 deploy() 方法执行流程部署。deploy() 方法会将之前构建好的流程定义、流程图、表单等内容部署到 Flowable 引擎中,使得这些流程可以在引擎中进行执行。

综合起来,这两句代码的含义是:创建一个流程部署构建器(DeploymentBuilder),并通过这个构建器完成流程的部署。在部署完成后,流程定义就会被加载到 Flowable 引擎中,从而可以通过引擎的 API 来启动、执行和管理相应的流程实例。

需要注意的是,在进行流程部署前,需要先创建好流程模型(BPMN 文件)和相关的表单、监听器等资源,并通过 DeploymentBuilder 设置好这些资源的信息。然后调用 deploy() 方法,Flowable 引擎就会将这些资源进行部署,使得流程定义可以在引擎中进行使用。

2.3 Authentication.setAuthenticatedUserId(userId);

Authentication.setAuthenticatedUserId() 是 Flowable 中的一个静态方法,用于设置当前用户的身份信息(即认证用户ID)。在 Flowable 引擎中,为了能够跟踪流程实例的操作历史以及与任务相关的操作,需要记录执行流程操作的用户信息。通过调用 Authentication.setAuthenticatedUserId() 方法,可以在流程的执行过程中设置当前用户的身份,从而将用户信息与流程操作关联起来。

通常在开启一个新的流程实例、完成任务或者进行其他涉及用户身份的操作时,我们可以通过 Authentication.setAuthenticatedUserId() 方法设置当前用户的身份信息,以保留用户与相应操作的关联。这样,在历史表中记录的流程实例历史数据中,可以保留执行操作的用户信息,方便后续审计和查看。

Authentication.setAuthenticatedUserId(userId)操作会影响哪些表、哪些字段?

  1. ACT_HI_TASKINST 表:
    • ASSIGNEE_ 字段:该字段记录了任务的负责人(执行人)的唯一标识符。在任务完成时,如果你在完成任务前使用 Authentication.setAuthenticatedUserId(currentUserId) 设置了当前用户的ID,那么该 currentUserId 将被记录在 ASSIGNEE_ 字段中,作为任务的负责人。
    • END_TIME_ 字段:该字段记录了任务的结束时间。在任务完成时,Flowable 引擎会自动将当前时间记录在 END_TIME_ 字段中,标志任务的完成时间。
  2. ACT_HI_COMMENT 表(如果有添加任务评论):
    • USER_ID_ 字段:该字段记录了评论的作者(即用户ID)。在任务完成时,如果你在完成任务前使用 Authentication.setAuthenticatedUserId(currentUserId) 设置了当前用户的ID,那么该 currentUserId 将被记录在 USER_ID_ 字段中,作为评论的作者。
  3. 其他历史表(例如 ACT_HI_VARINSTACT_HI_ACTINST等,如果涉及流程变量、活动实例等):
    • 如果在完成任务前使用 Authentication.setAuthenticatedUserId(currentUserId) 设置了当前用户的ID,并且在任务完成的过程中与流程变量或活动实例等相关联,那么这些历史表中与当前用户相关的字段也会受到影响。

需要注意的是,Authentication.setAuthenticatedUserId(currentUserId) 方法设置的当前用户ID在任务完成时对历史表产生影响是在任务监听器中触发的,例如在 “complete” 事件的任务监听器中执行了设置当前用户ID的操作。完成任务时,Flowable 引擎会调用任务监听器,并在任务监听器的执行期间记录相应的历史数据。

以下是一个简单的示例,演示如何在 Flowable 中使用 Authentication.setAuthenticatedUserId() 方法:

public class AuthenticationExample {

    public static void main(String[] args) {
        // 设置当前用户的身份信息
        String currentUserId = "user123";
        Authentication.setAuthenticatedUserId(currentUserId);

        // 启动新的流程实例
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        RuntimeService runtimeService = processEngine.getRuntimeService();
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");

        // 查询当前流程实例的任务并完成任务
        TaskService taskService = processEngine.getTaskService();
        Task userTask = taskService.createTaskQuery()
                .processInstanceId(processInstance.getId())
                .singleResult();

        // 完成任务
        taskService.complete(userTask.getId());

        // 清除当前用户的身份信息(一般在执行流程操作后进行清除,避免对后续操作产生干扰)
        Authentication.setAuthenticatedUserId(null);
    }
}

在上面的示例中,我们首先使用 Authentication.setAuthenticatedUserId(currentUserId) 设置了当前用户的身份信息为 “user123”。然后启动了一个新的流程实例,完成了相关任务。最后,通过 Authentication.setAuthenticatedUserId(null) 清除了当前用户的身份信息,避免对后续操作产生干扰。

总结:Authentication.setAuthenticatedUserId() 方法用于在 Flowable 中设置当前用户的身份信息,将用户信息与流程操作关联起来,方便在历史表中记录相关操作的用户信息。需要适时地在合适的时机设置和清除用户身份信息,以确保数据的正确记录。

2.4 taskService.complete(task.getId(), variables)

在 Flowable 中,执行 taskService.complete(task.getId(), variables) 方法时,除了会更新当前正在执行的任务的状态外,还会进行以下更新和操作:

  1. 完成当前任务:调用 taskService.complete(task.getId(), variables) 方法,会将当前正在执行的任务标记为已完成(Completed),并从运行时表(ACT_RU_TASK)中删除该任务的记录。

  2. 记录历史任务:完成任务后,Flowable 会将该任务的历史数据记录到历史任务实例表(ACT_HI_TASKINST)。历史任务实例表中将保留该任务的详细信息,包括任务的名称、执行人、持续时间、开始时间、结束时间等。

    ACT_HI_TASKINST表的ASSIGNEE_字段是如何更新的?如何指定ASSIGNEE _

    Flowable 引擎是通过任务的执行人信息来确定历史任务实例表中的 ASSIGNEE_ 字段的值。在流程执行过程中,每个任务都有一个负责人(也称为执行人、办理人),可以通过 taskService.claim(taskId, assignee) 方法来设置任务的负责人。

    在任务完成时,Flowable 引擎会首先检查任务是否已被负责人声明(claimed)。如果任务已经被负责人声明,那么在历史任务实例表中的 ASSIGNEE_ 字段会被设置为负责人的唯一标识符。如果任务没有被负责人声明,那么 ASSIGNEE_ 字段会被设置为 null 或为空字符串,表示任务没有指定负责人。

    举个例子,假设有一个用户任务节点,在流程执行过程中,我们通过 taskService.claim(taskId, assignee) 方法设置任务的负责人,然后通过 taskService.complete(taskId) 方法完成任务。在任务完成时,Flowable 引擎会将该任务的历史数据记录到历史任务实例表中,并将负责人的唯一标识符存储在 ASSIGNEE_ 字段中。

  3. 更新流程变量:variables 参数是一个 Map 类型的对象,用于设置任务完成时的流程变量。当任务完成时,Flowable 会将 variables 中的变量更新到运行时表中,以便后续流程继续执行时可以使用这些变量。

  4. 执行任务监听器:在任务完成前后,Flowable 会触发与该任务相关的任务监听器(如果有配置的话)。任务监听器可以用于执行一些自定义的业务逻辑,例如在任务完成时发送通知、更新业务数据等操作。

    任务监听器(Task Listener)

    在 Flowable 中,任务监听器(Task Listener)是一种用于在任务执行期间触发自定义业务逻辑的机制。可以通过配置任务监听器来实现在任务完成前后执行一些额外的操作。具体来说,在任务完成前触发的是 “complete” 类型的任务监听器,而在任务完成后触发的是 “complete” 和 “delete” 类型的任务监听器。

    下面举例说明如何在任务完成时通过任务监听器发送通知和更新业务数据:

    发送通知:假设我们有一个用户任务节点,当任务完成时,我们希望向任务的执行人发送一封完成通知邮件。为了实现这个功能,我们可以配置一个 “complete” 类型的任务监听器,在任务完成前触发,在监听器的逻辑中发送通知邮件。

    public class TaskCompletionListener implements TaskListener {
    
     @Override
     public void notify(DelegateTask delegateTask) {
         // 获取任务的负责人(执行人)
         String assignee = delegateTask.getAssignee();
    
         // 发送通知邮件给任务负责人
         sendNotificationEmail(assignee, "Your task has been completed.");
     }
    
     // 发送通知邮件的实现
     private void sendNotificationEmail(String recipient, String message) {
         // 在这里实现发送邮件的逻辑
         // 省略具体的邮件发送代码
     }
    }
    

    然后,在流程定义的 BPMN 文件中配置该任务监听器:

    <userTask id="usertask1" name="Review Task" activiti:assignee="${reviewer}">
     <!-- 配置任务监听器 -->
     <extensionElements>
         <activiti:taskListener event="complete" class="com.example.TaskCompletionListener" />
     </extensionElements>
    </userTask>
    

    在上述例子中,当用户任务节点(id=“usertask1”)完成时,会触发 TaskCompletionListener 这个任务监听器,执行 notify() 方法中的逻辑,从而发送通知邮件给任务负责人。

    1. 更新业务数据:假设我们的业务中需要在任务完成后更新一些业务数据,例如将任务的状态更新为 “已完成”。我们可以在任务监听器中执行相应的业务逻辑。
    public class TaskCompletionListener implements TaskListener {
    
        @Override
        public void notify(DelegateTask delegateTask) {
            // 获取业务数据ID等相关信息
            String businessDataId = (String) delegateTask.getVariable("businessDataId");
    
            // 更新业务数据状态为 "已完成"
            updateBusinessDataStatus(businessDataId, "已完成");
        }
    
        // 更新业务数据状态的实现
        private void updateBusinessDataStatus(String dataId, String status) {
            // 在这里实现更新业务数据状态的逻辑
            // 省略具体的更新代码
        }
    }
    

    然后,在流程定义的 BPMN 文件中配置该任务监听器,方式同上一个例子。

    总结:任务监听器是 Flowable 中的一个扩展机制,可以用于在任务完成前后执行自定义的业务逻辑。通过配置 “complete” 类型的任务监听器,我们可以在任务完成时执行一些额外的操作,例如发送通知、更新业务数据等。监听器中的逻辑根据具体需求进行实现,可以与业务系统进行集成,实现更复杂的操作。

  5. 触发流程执行:完成任务后,Flowable 引擎会根据流程定义中的流程流转规则,继续执行接下来的任务或流程流程。如果有连线上设置了条件表达式,引擎会根据条件来确定下一个要执行的任务或路径。

需要注意的是,完成任务的操作是一个非常重要的步骤,它会触发引擎的流程流转,并且会将当前任务的执行状态更新到历史表中。完成任务时,通常会提供一些流程变量来传递任务执行过程中的数据,这些变量会在流程继续执行时被传递给后续的任务或网关,从而影响流程的走向和行为。

总结:taskService.complete(task.getId(), variables) 方法完成了当前任务的执行,同时记录了历史任务信息、更新了流程变量,并根据流程定义中的流转规则继续执行接下来的流程步骤。完成任务是流程引擎中的一个关键操作,它推动了整个流程的执行和进展。

2.5 processInstanceBuilder.start()

在 Flowable 中,ProcessInstanceBuilder 是用于创建和启动新的流程实例的辅助类。可以通过 runtimeService.createProcessInstanceBuilder() 获取 ProcessInstanceBuilder 实例,然后使用它来设置流程实例的相关属性和流程变量,并最终启动流程实例。

下面解释一下代码的含义:

  1. ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder();: 这一行代码创建了一个 ProcessInstanceBuilder 实例。runtimeServiceRuntimeService 的实例,通过它可以与运行时服务进行交互,包括创建流程实例、执行任务等操作。
  2. processInstanceBuilder.start(): 这一行代码创建了新的流程实例,并将其加入到运行时表 ACT_RU_EXECUTION。在调用 start() 方法之前,通常需要使用 ProcessInstanceBuilder 对象设置流程实例的相关属性和流程变量,以确定启动哪个流程定义和如何初始化流程实例的状态。

启动流程实例是一个重要的操作,它会根据流程定义的规则创建新的流程实例并将其加入到运行时表中,从而开始流程的执行。在流程实例启动后,Flowable 引擎会根据流程定义中定义的流程流转规则,执行相应的流程步骤。

例如,如果你的流程定义中有一个用户任务节点,流程实例启动后会在该用户任务节点创建一个新的任务,并等待任务的完成。

在启动流程实例之前,你可以通过 ProcessInstanceBuilder 对象设置流程实例的各种属性和变量,例如:

ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder()
        .processDefinitionKey("myProcess") // 设置要启动的流程定义的Key
        .businessKey("12345") // 设置业务关联键
        .variable("variable1", "value1") // 设置流程变量
        .variable("variable2", 123)
        .name("My Process Instance"); // 设置流程实例的名称

ProcessInstance processInstance = processInstanceBuilder.start(); // 启动流程实例

在上述示例中,我们通过 ProcessInstanceBuilder 对象设置了要启动的流程定义的Key、业务关联键、流程变量和流程实例的名称,然后调用 start() 方法启动了流程实例,并将返回的 ProcessInstance 对象保存在变量 processInstance 中。

总结:ProcessInstanceBuilder 是用于创建和启动新的流程实例的辅助类,可以通过 runtimeService.createProcessInstanceBuilder() 获取它。在调用 start() 方法之前,你可以使用 ProcessInstanceBuilder 对象设置流程实例的相关属性和流程变量。启动流程实例后,Flowable 引擎会根据流程定义的规则开始执行相应的流程步骤。

2.6 为什么在发起一个流程的时候,ACT_RU_EXECUTION更新了两行数据 ?

在发起一个新的流程实例时,ACT_RU_EXECUTION 表会更新两行数据是因为 Flowable 引擎使用了根执行(Root Execution)和子执行(Sub Execution)的概念来管理流程实例的执行过程。

当你发起一个新的流程实例时,Flowable 引擎会创建两个执行实例,即根执行和子执行。这两个执行实例对应了流程实例的整个执行过程。

具体来说,根执行(Root Execution)表示整个流程实例的执行过程,它是流程实例的顶层执行实例。而子执行(Sub Execution)表示流程实例中每个活动(如用户任务、服务任务等)的执行过程。

更新两行数据的原因如下:

  1. 根执行的更新:在发起流程实例时,Flowable 引擎会在 ACT_RU_EXECUTION 表中插入一条新的记录,表示新的流程实例的根执行。这个根执行对应了整个流程实例的执行过程,包括所有活动和任务的执行信息。根执行的记录会被更新,例如更新流程实例的业务关联键、流程变量等信息。
  2. 子执行的更新:在流程实例的执行过程中,当执行到一个活动(例如用户任务)时,Flowable 引擎会创建一个子执行,并在 ACT_RU_EXECUTION 表中插入一条记录,表示该活动的子执行。子执行的记录也会被更新,例如更新活动的执行状态、执行人、开始时间、结束时间等信息。

因此,在发起一个新的流程实例时,ACT_RU_EXECUTION 表会有两条记录:一条表示根执行,一条表示子执行。这两条记录分别对应了流程实例的整个执行过程和每个活动的执行过程,因此在流程实例启动时都会进行更新。

总结:在发起一个新的流程实例时,Flowable 引擎会在 ACT_RU_EXECUTION 表中创建两条记录,分别表示根执行和子执行。这两条记录分别对应了流程实例的整个执行过程和每个活动的执行过程,在流程实例启动时会进行更新。

以下为发起一个新的流程实例时,Flowable 引擎会在 `ACT_RU_EXECUTION` 表中创建的记录:
{
  "RECORDS": [
    {
      "ID_": "585e73f9-2f53-11ee-9922-7a958723305e",
      "REV_": 1,
      "PROC_INST_ID_": "585e73f9-2f53-11ee-9922-7a958723305e",
      "BUSINESS_KEY_": null,
      "PARENT_ID_": null,
      "PROC_DEF_ID_": "Process_1690125590497:7:05944b3a-2eef-11ee-9922-7a958723305e",
      "SUPER_EXEC_": null,
      "ROOT_PROC_INST_ID_": "585e73f9-2f53-11ee-9922-7a958723305e",
      "ACT_ID_": null,
      "IS_ACTIVE_": 1,
      "IS_CONCURRENT_": 0,
      "IS_SCOPE_": 1,
      "IS_EVENT_SCOPE_": 0,
      "IS_MI_ROOT_": 0,
      "SUSPENSION_STATE_": 1,
      "CACHED_ENT_STATE_": null,
      "TENANT_ID_": "",
      "NAME_": null,
      "START_ACT_ID_": "Event_026js91",
      "START_TIME_": "31/7/2023 11:35:50.644",
      "START_USER_ID_": "1",
      "LOCK_TIME_": null,
      "LOCK_OWNER_": null,
      "IS_COUNT_ENABLED_": 1,
      "EVT_SUBSCR_COUNT_": 0,
      "TASK_COUNT_": 0,
      "JOB_COUNT_": 0,
      "TIMER_JOB_COUNT_": 0,
      "SUSP_JOB_COUNT_": 0,
      "DEADLETTER_JOB_COUNT_": 0,
      "EXTERNAL_WORKER_JOB_COUNT_": 0,
      "VAR_COUNT_": 0,
      "ID_LINK_COUNT_": 0,
      "CALLBACK_ID_": null,
      "CALLBACK_TYPE_": null,
      "REFERENCE_ID_": null,
      "REFERENCE_TYPE_": null,
      "PROPAGATED_STAGE_INST_ID_": null,
      "BUSINESS_STATUS_": null
    },
    {
      "ID_": "585ee932-2f53-11ee-9922-7a958723305e",
      "REV_": 1,
      "PROC_INST_ID_": "585e73f9-2f53-11ee-9922-7a958723305e",
      "BUSINESS_KEY_": null,
      "PARENT_ID_": "585e73f9-2f53-11ee-9922-7a958723305e",
      "PROC_DEF_ID_": "Process_1690125590497:7:05944b3a-2eef-11ee-9922-7a958723305e",
      "SUPER_EXEC_": null,
      "ROOT_PROC_INST_ID_": "585e73f9-2f53-11ee-9922-7a958723305e",
      "ACT_ID_": "Activity_08vjmgf",
      "IS_ACTIVE_": 1,
      "IS_CONCURRENT_": 0,
      "IS_SCOPE_": 0,
      "IS_EVENT_SCOPE_": 0,
      "IS_MI_ROOT_": 0,
      "SUSPENSION_STATE_": 1,
      "CACHED_ENT_STATE_": null,
      "TENANT_ID_": "",
      "NAME_": null,
      "START_ACT_ID_": null,
      "START_TIME_": "31/7/2023 11:35:50.647",
      "START_USER_ID_": null,
      "LOCK_TIME_": null,
      "LOCK_OWNER_": null,
      "IS_COUNT_ENABLED_": 1,
      "EVT_SUBSCR_COUNT_": 0,
      "TASK_COUNT_": 1,
      "JOB_COUNT_": 0,
      "TIMER_JOB_COUNT_": 0,
      "SUSP_JOB_COUNT_": 0,
      "DEADLETTER_JOB_COUNT_": 0,
      "EXTERNAL_WORKER_JOB_COUNT_": 0,
      "VAR_COUNT_": 0,
      "ID_LINK_COUNT_": 0,
      "CALLBACK_ID_": null,
      "CALLBACK_TYPE_": null,
      "REFERENCE_ID_": null,
      "REFERENCE_TYPE_": null,
      "PROPAGATED_STAGE_INST_ID_": null,
      "BUSINESS_STATUS_": null
    }
  ]
}
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐