activiti6学习

activiti6使用教程

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

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

一、通用数据表

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_可以根据该键来查找用户信息的值。
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
CONTENT_ID_附件内容ID,附件的内容将会被保存到资源表中,该字段记录资源数据ID。
URL_连接到该附件的URL

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

附件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Odoo免费开源ERP如何处理汽车零部件企业的OE编码问题

业务背景 汽车零部件企业在每个汽配零件都有OE编号,即原厂编号,Original Equipment Number。一个配件,可能可以在多个车型上使用,对应的,就有多个可兼容的OE编号。 客户下单时候,直接报OE编号&#xff0c…

集合与最大公因数

题目链接 三个小性质 1.相邻两个数互质,如5,6 2.连续三个奇数互质,如1,3,5 3.连续两个偶数必定有公因子,如2,4 对于这题我们要让四个数两两最大公约数为k,也就是说这四个数除了约数k以外没有其他公约数了,也就是如果我们把k都除掉,剩下四…

C语言 统计文章中的字符种类

有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字 母、小写字母、数字、空格以及其他字符的个数。 #include <stdio.h>int main() {char text[3][80] {"This is a line of text 123.","Another line, with more Characters!"…

objc_object 与 objc_class 是一定要了解的底层结构

入门 在 Objective-C 中&#xff0c;objc_object 和 objc_class 是运行时系统的核心结构&#xff0c;用于表示对象和类。理解它们的结构和关系对于掌握 Objective-C 的运行时机制非常重要。 objc_object 结构 objc_object 结构代表一个 Objective-C 对象。每个 Objective-C …

Python数据处理之高效校验各种空值技巧详解

概要 在编程中,处理空值是一个常见且重要的任务。空值可能会导致程序异常,因此在进行数据处理时,必须确保数据的有效性。Python 提供了多种方法来处理不同数据对象的空值校验。本文将详细介绍如何对Python中的各种数据对象进行空值校验,并包含相应的示例代码,帮助全面掌握…

高速电吹风方案介绍,多档温度风速调节,转速可达105000RPM

高速电吹风是这几年很火的一种电动小家电&#xff0c;能够在较短时间内完成头发干燥&#xff0c;减少对头发的热损伤。可以通过高速电机和风扇来产生高速风流&#xff0c;迅速将头发表面的水分吹干。高速电吹风通常配有多种档位风速和温度可以设置&#xff0c;用户可以根据需要…

大数据笔记--kafka工具AKHQ

目录 一、项目背景 二、项目目标 三、项目部署 1、前提条件 2、流程 2.1、准备工作 2.2、安装AKHQ 2.3、配置AKHQ 2.4、启动AKHQ 四、验证 一、项目背景 日常运维工作中&#xff0c;越来越多的团队成员&#xff0c;包括开发人员、数据分析师和业务运营团队&#xff0…

Linux——开发工具

1.yum yum是centos中的一个软件下载安装管理客户端&#xff0c;可以下载需要的软件或者解决依赖关系问题&#xff08;如动态库&#xff09;。程序都是来源于一段源代码&#xff0c;为了方便下载&#xff0c;源代码被提前在不同的环境下编译好生成对应的yum软件包&#xff0c;存…

运营商如何通过PCDN技术提高用户服务

随着网络技术的快速发展&#xff0c;用户对网络服务的要求也在不断提高。为了满足这些需求&#xff0c;运营商需要不断创新和优化自身的技术和服务。而 PCDN (Personal Content Delivery Network)技术作为一种新兴的内容分发网络解决方案&#xff0c;为运营商提高用户服务提供了…

k8s离线部署芋道源码后端

目录 概述实践Dockerfilek8s部署脚本 概述 本篇将对 k8s离线部署芋道源码后端 进行详细的说明&#xff0c;对如何构建 Dockerfile&#xff0c;如何整合 Nginx&#xff0c;如何整合 ingress 进行实践。 相关文章&#xff1a;[nacos在k8s上的集群安装实践] k8s离线部署芋道源码前…

Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统

文章目录 Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统TFTP服务搭建测试 NFS服务搭建测试 uboot配置TFTP服务搭建测试 NFS服务搭建测试 U-BOOT配置 Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统 TFTP服务搭建 sudo apt install tftpd-hpa su…

智能车载防窒息系统设计

摘要 随着汽车行业的快速发展&#xff0c;车辆安全问题越来越受到人们的关注。其中&#xff0c;车载防窒息系统是一项重要的安全设备。本论文基于STM32单片机&#xff0c;设计了一种智能车载防窒息系统。该系统主要包括氧气浓度检测模块、温湿度检测模块、声音检测模块、光线检…

『ComfyUI』从小白到入门全套教程,奶奶看了都会了!赶紧收藏!

本文简介 Stable Diffusion WebUI 应该是大多数人第一次接触 SD 绘画的工具&#xff0c;这款工具简单易上手&#xff0c;但操作流程相对固定。如果你想拥有更自由的工作流&#xff0c;可以试试 ComfyUI。而且很多新的模型和功能在刚出现时 ComfyUI 的支持度都比较高&#xff0…

拥抱应用创新,拒绝无谓的模型竞争

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

TikTok海外运营,云手机多种变现方法

从现阶段来看&#xff0c;TikTok 的用户基数不断增长&#xff0c;已然成为全球创业者和品牌的全新竞争舞台。其用户数量近乎 20 亿&#xff0c;年轻用户占据主导&#xff0c;市场渗透率也逐年提高。不管是大型企业、著名品牌&#xff0c;还是个体创业者&#xff0c;都绝不能小觑…

matlab 有倾斜的椭圆函数图像绘制

matlab 有倾斜的椭圆函数图像绘制 有倾斜的椭圆函数图像绘制xy交叉项引入斜线负向斜线成分正向斜线成分 x^2 y^2 xy 1 &#xff08;负向&#xff09;绘制结果 x^2 y^2 - xy 1 &#xff08;正向&#xff09;绘制结果 有倾斜的椭圆函数图像绘制 为了确定椭圆的长轴和短轴的…

最新Wireshark查看包中gzip内容

虽然是很简单的事情&#xff0c;但是网上查到的查看gzip内容的方法基本都是保存成zip文件&#xff0c;然后进行二进制处理。 其实现在最新版本的Wireshark已经支持获取gzip内容了。 选中HTTP协议&#xff0c;右键选择[追踪流]->[HTTP Stream] 在弹出窗口中&#xff0c;已…

从“技术驱动”向“应用驱动”

李彦宏在2024世界人工智能大会上的发言深刻揭示了当前AI技术发展的核心趋势与方向&#xff0c;强调了从“技术驱动”向“应用驱动”转变的重要性&#xff0c;这一观点极具前瞻性和实践指导意义。 对李彦宏发言的理解 技术与应用并重&#xff0c;但应用为先&#xff1a;李彦宏指…

前端开发者的算法修炼:10道经典算法题解析

在前端开发领域&#xff0c;扎实的算法基础不仅能提升代码质量&#xff0c;还能在面试中大放异彩。本文将精选10道前端开发者常见的算法题&#xff0c;并附上详细的解析&#xff0c;帮助你巩固算法知识&#xff0c;提高问题解决能力。 1. 数组扁平化 题目&#xff1a;给定一个…

为何Expo成为React Native官方推荐框架?

在React Conf上&#xff0c;我们更新了关于构建React Native应用的最佳工具指南&#xff1a;一个React Native框架——一个工具箱&#xff0c;包含所有必要的API&#xff0c;让你可以构建生产就绪的应用。 现在&#xff0c;使用React Native框架&#xff08;如Expo&#xff09…