2 Star 7 Fork 4

BushRo / activiti6-all

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

activiti6-all

介绍

activiti6使用教程

activiti的数据库表结构主要分为五类:

数据表分类 描述
ACT_GE_* 通用数据表(GE表示General)
ACT_RE_* 流程定义存储表(RE表示Repository)
ACT_ID_* 身份信息表(ID表示Identity)
ACT_RU_* 运行时数据库表(RU表示Runtime)
ACT_HI_* 历史数据库表(HI表示History)

使用教程

案例中流程数据的存储分为h2嵌入式数据库和mysql数据库,推荐使用mysql数据库的方式,方便每个节点查看生成的数据,从而理解流程的运行

案例都在test目录下。可以自行运行看看

mysql数据库

  • resources\dbentity\activiti-mysql.cfg.xml 数据库配置文件,
  • activiti6-all\src\test\java\com\bushro\activiti\dbentity\DbConfigTest.java 里面有生成表的方法和删除表的方法
    //指定配置文件
    @Rule
    public ActivitiRule activitiRule = new ActivitiRule("dbentity/activiti-mysql.cfg.xml");

h2嵌入式数据库

没有指定默认使用的就是h2嵌入式数据库

    @Rule
    public ActivitiRule activitiRule = new ActivitiRule();

一、通用数据表

1、资源表,act_ge_bytearray

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

主要包含如下字段:

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

2、属性表,act_ge_property

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

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

二、流程存储数据表

1、部署数据表,act_re_deployment。

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

主要包含字段:

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

2、流程定义表,act_re_procdef。

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,如果流程定义被设置为中止状态,那么将不能启动流程。

三、身份数据表#

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。

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

PS:act_id_membership的两个字段均做了外键约束,写入该表的数据,必须要有用户和用户组数据与之关联。

主要包含字段:

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

四、运行时数据表

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、工作数据表,一共4个。

  • act_ru_job:一般工作表
  • act_ru_deadletter_job:无法执行工作表,用于存放无法执行的工作。
  • act_ru_suspended_job:中断工作表,中断工作产生后,会将工作保存到该表中。
  • act_ru_timer_job:定时器工作表,用于存放定时器工作。

6、事件描述表,act_ru_event_subscr。

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

主要包含字段:

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

五、历史数据表

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,可以添加附件,这些附件的数据将会被保存到act_hi_attachment表中。

主要包含字段:

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

6、评论表,act_hi_comment。

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

主要包含字段:

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

六、DMN规则引擎数据表

1、决策部署表,act_dmn_deployment。

保存决策数据,类似于流程定义部署,每一次部署,可以添加多份决策文件,向部署表中写入一条部署数据。

PS:只启动流程引擎,并不会创建规则引擎表。

主要包含字段:

字段 注释
NAME_ 部署名称
CATEGORY_ 部署的目录名称
PARENT_DEPLOYMENT_ID_ 父部署ID

2、决策表,act_dmn_decision_table。

可以先将决策看做流程定义,决策文件中保存着决策表,部署时会解析决策文件中的决策模型并将其保存到act_dmn_decision_table中。

主要包含字段:

字段 注释
KEY_ 决策业务主键
DEPLOYMENT_ID_ 所属的部署数据ID

3、部署资源表,act_dmn_deployment_resource。

规则引擎相关的资源,例如决策文件、图片等,被保存在act_dmn_deployment_resource表中,该表类似于流程引擎的资源表。

主要包含字段:

字段 注释
NAME_ 资源名称
DEPLOYMENT_ID_ 所属的部署数据ID
RESOURCE_BYTES_ 资源内容,longblob类型。

软件架构

软件架构说明

使用说明

核心API
  • RepositoryService: 负责对流程定义文件的管理,操作一些静态文件(流程xml、流程图片),获取部署对象和资源对象
  • RunTimeService: 对流程进行控制,可用于启动流程、暂停、挂起等,有方便的api来查询正在运行的流程实例和流程对象。可对流程中上下文数据进行设置和获取
  • TaskService: 人工任务,对人工任务进行增删改查,可对任务进行指定到用户或用户组。也可以对用户任务上下文数据进行设置和获取 IdentityService: 对用户及用户组的管理,创建用户用户组、维护用户、用户组的关系
  • FormService: 流程的表单,对表单的输入类型、格式进行数据渲染
  • HistoryService: 已经结束的流程查询、删除,流程上下文的一些快照数据获取
  • ManagementService: 对流程引擎基础的管理、用的较少。并对定时任务job管理,可获取数据库表名的方法
  • DyanmicBpmService: 动态对流程定义修改,不建议使用
RepositoryService流程存储服务
  • 管理流程定义文件xml以及静态资源的服务
  • 对特定流程的暂停和激活
  • 流程定义启动权限管理
Api
  • 部署文件构造器DeploymentBuilder
  • 部署文件查询器DeploymentQuery
  • 流程定义文件查询对象ProcessDefinitionQuery
  • 流程部署文件对象Deployment
  • 流程定义文件对象ProcessDefinition
  • 流程定义的Java格式BpmnModel

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
MIT License Copyright (c) 2021 BushRo Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

activiti6使用教程,包含核心API使用案例,以及数据的走向过程详细说明。 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/bushro/activiti6-all.git
git@gitee.com:bushro/activiti6-all.git
bushro
activiti6-all
activiti6-all
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891