Skip to content

一、核心7大接口、28张表

1、7大接口
  • RepositoryService:提供一系列管理流程部署和流程定义的API。
  • RuntimeService:在流程运行时对流程实例进行管理与控制。
  • TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务等。
  • IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户以及他们之间的关系。
  • ManagementService:提供对流程引擎进行管理和维护的服务。
  • HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。
  • FormService:表单服务
2、28张表
  • ACT_GE 通用数据表,ge是general的缩写
  • ACT_HI 历史数据表,hi是history的缩写,对应HistoryService接口
  • ACT_ID 身份数据表,id是identity的缩写,对应IdentityService接口
  • ACT_RE 流程存储表,re是repository的缩写,对应RepositoryService接口
  • ACT_RU 运行时数据表,ru是runtime的缩写,对应RuntimeSerice接口

二、表详解

1、通用数据表

  1. 资源表,act_ge_bytearray

    用于保存和流程引擎相关的资源,只要调用了Activiti存储服务的API,涉及的资源均会被转换为byte数组保存到这个表中。 一般情况下,Activiti使用这个表来保存字符串、流程文件的内容、流程图片内容。

    字段注释
    REV_数据版本,Activiti为一些有可能被频繁修改的数据表,加入该字段,用来表示该数据被操作的次数。
    Name_资源名称,类型为varchar,长度为255字节
    DEPLOYMENT_ID_一次部署可以添加多个资源,该字段与部署表act_re_deloyment的主键关联
    BYTES资源内容,数据类型为longblob,最大可存储4GB数据
    GENERATED_是否由Activiti自动产生的资源,0表示false,1为true
  2. 属性表,act_ge_property

    Activiti将全部的属性抽象为key-value对,每个属性都有名称和值,使用act_ge_property来保存这些属性,该表有以下三个字段。

    字段注释
    NAME_属性名称,varchar类型。
    VALUE_属性值,varchar类型。
    REV_数据的版本号。

2、流程存储数据表

  1. 部署数据表,act_re_deployment

    部署信息会被保存在部署表中

    字段注释
    NAME_部署的名称,可以调用Activiti的流程存储API来设置,类型为varchar,长度为255字节。
    DEPLOYMENT_TIME_部署时间,类型为timestamp。
  2. 流程定义表 act_reprocdef

    Activiti在部署添加资源时,如果部署的文件是流程文件(.bpmn或者.BPMN20.xml),则除了会解析这些流程文件,将内容保存到资源表外,还会解析流程文件的内容,形成特定的流程定义数据,写入流程定义表中。

    字段注释
    GATEGORY_流程定义的分类,读取流程XML文件中的targetNamespace值。
    NAME_流程定义名称,读取流程文件中process元素的name属性。
    KEY_流程定义的key,读取流程文件中process元素的id属性。
    DEPLOYMENT_ID_流程定义对应的部署数据ID
    RESOURCE_NAME_流程定义对应的资源名称,一般为流程文件的相对路径。
    DGRM_RESOURCE_NAME_流程定义对应的流程图资源名称
    SUSPENSION_STATE_表示流程定义的状态是激活还是中止,激活状态时该字段值为1,中止时字段值为2,如果流程定义被设置为中止状态,那么将不能启动流程。

3、身份数据表

  1. 用户表,act_id_user

    流程引擎的用户信息被保存在act_id_user表中

    字段注释
    FIRST_人名
    LAST_姓氏
    EMAIL_用户邮箱
    PWD_用户密码
    PICTURE_ID_用户图片,对应资源中的数据ID。
  2. 用户账号信息表,act_id_info

    Activiti将用户、用户账号和用户信息分为三种,其中用户表保存用户的数据,而用户账号和用户信息则被保存到act_id_info表中。

    字段注释
    USER_ID_对应用户表的数据ID,但没有强制做外键关联。
    TYPE_信息类型,当前可以设置用户账号(account)、用户信息(userinfo)和NULL三种值。
    KEY_数据的键,可以根据该键来查找用户信息的值。
    VALUE_数据的值,类型为varchar,长度为255字节。
    PASSWORD_用户账号的密码字段,不过当前版本的Activiti并没有使用该字段。
    PARENT_ID_该信息的父信息ID,如果一条数据设置了父信息ID,则表示该数据时用户账号(信息)的明细数据,例如一个账号有激活日期,那么激活日期就是该账号的明细数据,此处使用了自关联来实现。
  3. 用户组表,act_id_group

    保存用户组的数据

    字段注释
    NAME_用户组名称
    TYPE_用户组类型,类型不由Activiti提供,但是在某些业务中,Activiti会根据该字段的值进行查询,字段值由Activiti定义(如Activiti的webservice)。
  4. 关系表,act_id_membership

    一个用户组下有多个用户,一个用户可以属于不同的用户组,那么这种多对多的关系,就使用关系表来进行描述,关系表为

    字段注释
    USER_ID_用户ID,不能为NULL。
    GROUP_ID_用户组ID,不能为NULL。

4、运行时数据表

  1. 流程实例表,act_ru_execution

    流程启动后,会产生一个流程实例,同时会产生相应的执行流,流程实例和执行流数据均被保存在act_ru_execution表中,如果一个流程实例只有一条执行流,那么该表中只产生一条数据,该数据既表示执行流,也表示流程实例。

    字段注释
    PROC_INST_ID_流程实例ID,一个流程实例有可能会产生多个执行流,该字段表示执行流所属的流程实例。
    BUSINESS_KEY_启动流程时指定的业务主键
    PARENT_ID_父执行流的ID,一个流程实例有可能会产生执行流,该字段保存父执行流ID。
    PROC_DEF_ID_流程定义数据的ID
    ACT_ID_当前执行流行为的ID,ID在流程文件中定义。
    IS_ACTIVE_该执行流是否活跃的标识
    IS_CONCURRENT_执行流是否正在并行
    SUSPENSION_STATE_标识流程的中断状态
  2. 流程任务表 act_ru_task

    流程在运行过程中所产生的任务数据保存在 act_ru_task表中

    字段注释
    EXECUTION_ID_任务所在的执行流ID
    PROC_INST_ID_对应的流程实例ID
    PROC_DEF_ID_对应流程定义数据的ID
    NAME_任务名称,在流程文件中配置。
    DESCRIPTION_任务描述,在流程文件中配置。
    TASK_DEF_KEY_任务定义的ID值,在流程文件中定义。
    OWNER_任务拥有人,没有做外键关联。
    ASSIGNEE_被指派执行该任务的人,没有做外键关联。
    PRIORITY_任务优先级数值
    DUE_DATE_任务预定日期,类型为datetime。
  3. 流程参数表 act_ru_variable

    存放流程中的参数,这类参数包括流程实例参数、执行流参数和任务参数,参数有可能会有多种类型,因此该表使用多个字段来存放参数值。

    字段注释
    TYPE_参数类型,该字段值可以为boolean、bytes、serializable、date、double、integer、jap-entity、long、null、short、string,这些字段值均为Activiti提供,还可以通过扩展来自定义参数类型。
    NAME_参数名称
    EXECUTION_ID_该参数对应的执行ID,可以为null。
    PROC_INST_ID该参数对应的流程实例ID,可以为null。
    TASK_ID_如果该参数是任务参数,就需要设置任务ID。
    BYTEARRAY_ID_如果参数值是序列化对象,那么可以将该对象作为资源保存到资源表中,该字段保存资源表中数据的ID。
    DOUBLE_参数类型为double的话,则值会保存到该字段中。
    LONG_参数类型为long的话,则值会保存到该字段中。
    TEXT_用户保存文本类型的参数值,该字段为varchar类型,长度为4000字节。
    TEXT2_与TEXT_字段一样,用于保存文本类型的参数值
  4. 流程与身份关系表,act_ru_identitylink

    用户或者用户组与流程数据之间的关系,使用act_ru_identitylink来保存

    字段注释
    GROUP_ID_该关系数据中的用户组ID
    TYPE_该关系数据的类型,当前提供了3个值:assignee、candidate和owner,表示流程数据的指派人(组)、候选人(组)和拥有人。
    USER_ID_关系数据中的用户ID
    TASK_ID_关系数据中的任务ID
    PROC_DEF_ID_关系数据中的流程定义ID
  5. 工作数据表,一共四个

    • act_ru_job 一般工作表
    • act_ru_deadletter_job 无法执行工作表,用于存放无法执行的工作
    • act_ru_suspended_job 中断工作表,中断工作产生后,会将工作保存到该表中
    • act_ru_timer_job 定时器工作表,用户存放定时器工作
  6. 事件描述表,act_ru_event_substr

    如果流程到达某类事件节点,activiti会往act_ru_event_substr表中加入事件描述数据,这些事件描述数据将会决定流程事件的触发

    字段注释
    EVENT_TYPE_事件类型,不同的事件会产生不同类型的事件描述,并不是所有的事件都会产生事件描述。
    EVENT_NAME_事件名称,在流程文件中定义。
    EXECUTION_ID_事件所在的执行流ID
    PROC_INST_ID_事件所在的流程实例ID
    ACTIVITY_ID_具体事件的ID,在流程文件中定义。
    CONFIGURATION_事件的配置属性,该字段中有可能存放流程定义ID、执行流ID或者其他数据。

5、历史数据表

  1. 流程实例表,act_hi_procinst

    流程实例的历史数据会保存在 act_hi_procinst表中,只要流程被启动,就会将流程实例的数据写入到act_hi_procinst中。除了基本的流程字段外,与运行时数据表不同的是,历史流程实例表还会记录流程的开始活动ID、结束活动ID等信息。

    PS:该表的其他字段含义与运行时的流程视力表字段类似,在此不再赘述。

    字段注释
    START_ACT_ID_开始活动的ID,一般是流程开始事件的ID,在流程文件中定义。
    END_ACT_ID_流程最后一个活动的ID,一般是流程结束事件的ID,在流程文件中定义。
    DELETE_REASON_该流程实例被删除的原因
  2. 流程明细表,act_hi_detail

    记录流程执行过程中的参数或者表单数据,由于在流程执行过程中,会产生大量这类数据,因此默认情况下,Activiti不会保存流程明细数据,除非将流程引擎的历史数据配置为null

  3. 历史任务表,act_hi_taskinst

    当流程到达某个任务节点时,就会向历史任务表写入历史任务数据,该表与运行时任务表类似

  4. 历史行为表,act_hi_actinst

    记录每一个流程活动的实例,一个流程活动将会被记录为一条数据,根据该表可以追踪最完整的流程信息

  5. 附件表,act_hi_attachment

    使用任务服务(taskService)的api可以添加附件,这些附件的数据将会保存到该表中

    字段注释
    USER_ID_附件对应的用户ID,可以为NULL。
    NAME_附件名称
    DESCRIPTION_附件描述
    TYPE_附件类型
    TASK_ID_该附件对应的任务ID
    PROC_INST_ID_对应的流程实例ID
    URL_连接到该附件的URL
    CONTENT_ID_附件内容ID,附件的内容将会被保存到资源表中,该字段记录资源数据ID。
  6. 评论表,act_hi_comment

    不只保存评论数据,还会保存某些事件数据,但它的表名为COMMINT,因此更倾向于把它叫做评论表

    字段注释
    TYPE_评论的类型,可以设值为event或者comment,表示事件记录数据或者评论数据。
    TIME_数据产生的时间
    USER_ID_产生评论数据的用户ID
    TASK_ID_该评论数据的任务ID
    PROC_INST_ID_数据对应的流程实例ID
    ACTION_该评论数据的操作标识
    MESSAGE_该评论数据的信息
    FULL_MSG_该字段同样记录评论数据的信息