flowable 全生命周期涉及到的api及mysql表
要了解Flowable从流程创建到审批过程中涉及的API和MySQL表。之前对工作流引擎有一些基础了解,但具体到Flowable的细节可能不太熟悉。需要先回忆一下Flowable的基本概念,比如流程定义、流程实例、任务、执行实例等,然后逐步思考每个步骤会用到哪些API和数据库表。
首先,流程的创建通常是从部署流程定义开始的。Flowable中部署流程定义可能会使用RepositoryService的createDeployment方法,然后添加BPMN文件,最后部署。对应的数据库表是ACT_RE_DEPLOYMENT和ACT_RE_PROCDEF,分别存储部署信息和流程定义信息。
接下来是启动流程实例,这应该使用RuntimeService的startProcessInstanceByKey或startProcessInstanceById方法。启动后会在ACT_RU_EXECUTION表中创建执行实例,可能还有ACT_RU_TASK表记录任务信息。不过这里可能要看流程的具体结构,如果是用户任务,就会生成任务记录。
然后是任务的处理,用户需要查询任务,可能用TaskService的createTaskQuery来获取任务列表,然后执行taskService.complete(taskId)来完成任务。这时候任务会从ACT_RU_TASK表中删除,流程继续到下一个节点。同时,历史任务信息可能会记录在ACT_HI_TASKINST表中。
审批过程中可能涉及到的用户或用户组,可能涉及IdentityService来管理用户和组的关系,相关的表可能是ACT_ID_USER、ACT_ID_GROUP和ACT_ID_MEMBERSHIP。不过实际中可能很多人不使用Flowable内置的用户表,而是集成自己的系统。
还有历史记录,比如流程实例的历史信息存储在ACT_HI_PROCINST,任务历史在ACT_HI_TASKINST,变量历史在ACT_HI_VARINST等。这些表在流程进行中会记录各种历史数据。
变量管理方面,流程变量可能在运行时存储在ACT_RU_VARIABLE,历史变量在ACT_HI_VARINST。设置变量可能通过RuntimeService或TaskService的setVariable方法。
还有,审批过程中可能需要处理网关、分支、并行流程等,这时候执行实例可能会有父级和子级的关系,涉及ACT_RU_EXECUTION表的结构,比如PARENT_ID_字段。
另外,审批的时候可能会有审批意见,这可能需要用到评论功能,对应的API是TaskService的addComment,数据存在ACT_HI_COMMENT表中。
需要注意的是,Flowable的表都以ACT_开头,后面跟着两部分,第一部分表示表的作用,比如RE表示仓库,RU表示运行时,HI表示历史,ID表示身份。第二部分是具体的用途,比如PROCDEF是流程定义,TASK是任务等。
可能还需要考虑事务和异步任务,比如作业处理,对应的表是ACT_RU_JOB,相关的API是ManagementService。
不过,还有其他细节,比如每个步骤具体涉及哪些表,或者某些API的准确名称。比如流程实例启动后的运行时表,除了ACT_RU_EXECUTION和ACT_RU_TASK,可能还有ACT_RU_IDENTITYLINK来处理任务的候选人或组,或者ACT_RU_VARIABLE存储变量。
还有,流程定义部署后,ACT_GE_BYTEARRAY表存储流程的BPMN和图片资源,部署时上传的文件会被存储在这里。
现在需要把这些步骤和对应的API、表整理清楚,可能需要分步骤列出创建流程、启动实例、任务处理、历史查询等各个阶段用到的API和涉及的表。同时要注意有些表是运行时的,只在流程实例运行期间存在数据,而历史表则会保留记录。
比如,部署流程定义:
API:RepositoryService.createDeployment().addClasspathResource("process.bpmn20.xml").deploy();
涉及的表:ACT_RE_DEPLOYMENT(部署信息),ACT_GE_BYTEARRAY(存储BPMN文件),ACT_RE_PROCDEF(流程定义信息)。
启动流程实例:
API:RuntimeService.startProcessInstanceByKey("processKey");
涉及的表:ACT_RU_EXECUTION(执行实例),ACT_RU_TASK(如果启动后第一个节点是用户任务),ACT_RU_IDENTITYLINK(任务关联的用户或组),ACT_HI_PROCINST(历史流程实例),ACT_HI_ACTINST(历史活动实例)。
查询任务:
API:TaskService.createTaskQuery().taskAssignee("user1").list();
涉及的表:ACT_RU_TASK。
完成任务:
API:taskService.complete(taskId);
涉及的表:ACT_RU_TASK(当前任务被删除),ACT_RU_EXECUTION(可能更新或删除旧的,创建新的执行实例),ACT_HI_TASKINST(记录任务完成),ACT_HI_ACTINST(记录活动完成),ACT_HI_VARINST(如果有变量更新)。
变量处理:
API:runtimeService.setVariable(executionId, "varName", value);
涉及的表:ACT_RU_VARIABLE(运行时变量),ACT_HI_VARINST(历史变量)。
审批意见:
API:taskService.addComment(taskId, processInstanceId, "Approved");
涉及的表:ACT_HI_COMMENT。
身份管理:
API:IdentityService.createUserQuery().userId("user1").singleResult();
涉及的表:ACT_ID_USER,ACT_ID_GROUP,ACT_ID_MEMBERSHIP。
另外,流程结束时,相关的运行时数据会被删除,历史数据保留。
可能还有其他表,比如ACT_RU_EVENT_SUBSCR(事件订阅),ACT_RU_JOBS(定时任务),但这些可能在特定场景下使用。
总结下来,需要按流程的各个步骤,分别列出API和涉及的表,同时区分运行时表和历史表。
以下是Flowable从流程创建到审批全过程中涉及的API及MySQL表的详细说明:
1. 流程定义部署
API:
-
RepositoryService
-
createDeployment(): 创建部署对象。 -
addClasspathResource("process.bpmn"): 添加BPMN文件。 -
deploy(): 执行部署。
-
涉及MySQL表:
-
ACT_RE_DEPLOYMENT:存储部署信息(如部署ID、名称、时间)。
-
ACT_GE_BYTEARRAY:存储流程定义文件(BPMN、PNG)的二进制数据。
-
ACT_RE_PROCDEF:存储流程定义元数据(如Key、版本、流程名)。
2. 启动流程实例
API:
-
RuntimeService
-
startProcessInstanceByKey("processKey"):按流程Key启动实例。 -
startProcessInstanceById("processDefinitionId"):按流程定义ID启动实例。
-
涉及MySQL表:
-
ACT_RU_EXECUTION:记录运行中的执行实例(如流程实例、子流程)。
-
ACT_RU_TASK:若启动后首个节点是用户任务,生成任务记录。
-
ACT_HI_PROCINST:历史流程实例信息(开始/结束时间、状态)。
-
ACT_HI_ACTINST:历史活动记录(每个节点执行详情)。
3. 任务处理
API:
-
TaskService
-
createTaskQuery().taskAssignee("user1").list():查询用户的任务列表。 -
complete(taskId):完成任务并推动流程。 -
claim(taskId, "user1"):认领任务。 -
addComment(taskId, "Approved"):添加审批意见。
-
涉及MySQL表:
-
ACT_RU_TASK:运行中的任务信息(名称、处理人、创建时间)。
-
ACT_RU_IDENTITYLINK:任务与用户/组的关联(候选人、候选组)。
-
ACT_HI_TASKINST:历史任务记录(完成时间、处理人)。
-
ACT_HI_COMMENT:存储审批意见(评论内容、时间)。
4. 流程变量管理
API:
-
RuntimeService 或 TaskService
-
setVariable(executionId, "varName", value):设置全局变量。 -
getVariable(executionId, "varName"):获取变量。
-
涉及MySQL表:
-
ACT_RU_VARIABLE:运行时的流程变量。
-
ACT_HI_VARINST:历史变量变更记录。
5. 用户与组管理
API:
-
IdentityService
-
createUserQuery().userId("user1").singleResult():查询用户。 -
createGroupQuery().groupName("managers").list():查询用户组。
-
涉及MySQL表(可选,通常集成外部系统):
-
ACT_ID_USER:用户信息。
-
ACT_ID_GROUP:用户组信息。
-
ACT_ID_MEMBERSHIP:用户与组的关联关系。
6. 历史数据查询
API:
-
HistoryService
-
createHistoricProcessInstanceQuery():查询历史流程实例。 -
createHistoricTaskInstanceQuery():查询历史任务。
-
涉及MySQL表:
-
ACT_HI_PROCINST:历史流程实例。
-
ACT_HI_TASKINST:历史任务实例。
-
ACT_HI_ACTINST:历史节点活动记录。
-
ACT_HI_DETAIL:详细历史数据(如表单提交内容)。
7. 其他运行时操作
API:
-
ManagementService:处理异步作业(如定时器)。
-
createJobQuery().list():查询待处理作业。
-
-
FormService:处理表单数据(若使用内置表单)。
涉及MySQL表:
-
ACT_RU_JOB:运行中的异步作业(如定时任务)。
-
ACT_RU_EVENT_SUBSCR:事件订阅(如消息事件)。
8. 流程结束
-
流程完成后,运行时数据(
ACT_RU_*表)被清除,历史数据(ACT_HI_*表)保留。
关键表分类总结
| 表前缀 | 用途 | 示例表 |
|---|---|---|
| ACT_RE_ | 流程定义与部署 | ACT_RE_DEPLOYMENT, ACT_RE_PROCDEF |
| ACT_RU_ | 运行时数据 | ACT_RU_TASK, ACT_RU_EXECUTION |
| ACT_HI_ | 历史记录 | ACT_HI_PROCINST, ACT_HI_TASKINST |
| ACT_ID_ | 身份管理(用户/组) | ACT_ID_USER, ACT_ID_GROUP |
| ACT_GE_ | 通用数据(如二进制资源) | ACT_GE_BYTEARRAY |
通过上述API和表的配合,Flowable实现了完整的流程生命周期管理,从部署到审批结束,所有操作均可通过服务API控制,数据持久化到对应的MySQL表中。
相关文章:
flowable 全生命周期涉及到的api及mysql表
要了解Flowable从流程创建到审批过程中涉及的API和MySQL表。之前对工作流引擎有一些基础了解,但具体到Flowable的细节可能不太熟悉。需要先回忆一下Flowable的基本概念,比如流程定义、流程实例、任务、执行实例等,然后逐步思考每个步骤会用到…...
Golang | 每日一练 (3)
💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Golang | 每日一练 (3)题目参考答案map 实现原理hmapb…...
【java】类声明的两种形式
在 Java 中,类的声明有两种形式: public class Test class Test 它们的区别主要在于访问权限和文件名的要求。下面我会详细解释这两种形式的区别。 1. public class Test 访问权限: public 表示这个类是公共的,可以被其他包&am…...
VSCode 中设置 Git 忽略仅因时间戳修改导致的文件变更【使用deepseek生成的一篇文章】
在 VSCode 中设置 Git 忽略仅因时间戳修改导致的文件变更,可通过以下步骤实现: 确认是否为纯时间戳修改 首先确认文件的修改是否仅涉及时间戳,使用终端运行: git diff -- <file>若输出为空但 Git 仍提示修改,可…...
Docker入门及基本概念
让我们从最基础的概念开始逐步理解。假设你已经准备好了docker 环境。 第一步,让我们先通过实际操作来看看当前系统中的镜像(images)和容器(containers)状态: docker images # 查看所有镜像 docker ps -a # 查看所有容器(包括未运行…...
java八股文-消息队列
一、MQ基础篇 1. 什么是消息队列? 消息队列(MQ)是分布式系统中实现异步通信的中间件,解耦生产者和消费者。 2. 使用场景有哪些? 异步处理(如注册后发送邮件)系统解耦(不同服务通过…...
设备唯一ID获取,支持安卓/iOS/鸿蒙Next(uni-device-id)UTS插件
设备唯一ID获取 支持安卓/iOS/鸿蒙(uni-device-id)UTS插件 介绍 获取设备唯一ID、设备唯一标识,支持安卓(AndroidId/OAID/IMEI/MEID/MacAddress/Serial/UUID/设备基础信息),iOS(Identifier/UUID),鸿蒙&am…...
基于Springboot医院预约挂号小程序系统【附源码】
基于Springboot医院预约挂号小程序系统 效果如下: 小程序主页面 帖子页面 医生账号页面 留言内容页面 管理员主页面 用户管理页面 我的挂号页面 医生管理页面 研究背景 随着信息技术的飞速发展和互联网医疗的兴起,传统的医疗服务模式正面临着深刻的变…...
微信小程序 - 页面跳转(wx.navigateTo、wx.redirectTo、wx.switchTab、wx.reLaunch)
API 跳转 1、wx.navigateTo (1)基本介绍 功能:保留当前页面,跳转到应用内的某个页面,使用该方法跳转后可以通过返回按钮返回到原页面 使用场景:适用于需要保留当前页面状态,后续还需返回的情…...
如何手动设置u-boot的以太网的IP地址、子网掩码、网关信息、TFTP的服务器地址,并进行测试
设置IP地址 运行下面这条命令设置u-boot的以太网的IP地址: setenv ipaddr 192.168.5.9设置子网掩码 运行下面这条命令设置u-boot的以太网的子网掩码: setenv netmask 255.255.255.0设置网关信息 运行下面这条命令设置u-boot的网关信息: …...
小红书运营教程(内容笔记01)
# 小红书笔记引流实战指南:合规涨粉与精准引流策略## 一、引流底层逻辑:平台算法与用户心理### 1.1 小红书流量推荐机制 ```mermaid graph TD A[笔记发布] --> B(机器初审) B --> C{内容质量检测} C -->|通过| D[进入初级流量池200-500曝光] D --> E{互动率达标?…...
tortoiseGit的使用和上传拉取
tortoiseGit的使用和上传拉取 下载TortoiseGit 通过网盘分享的文件:tortoiseGit.zip 链接: https://pan.baidu.com/s/1EOT_UsM9_OysRqXa8gES4A?pwd1234 提取码: 1234 在电脑桌面新建文件夹并进入 右击鼠标 将网址复制上去 用户名和密码是在git注册的用户名和…...
IDEA通过Maven使用JBLJavaToWeb插件创建Web项目
第一步:IDEA下载JBLJavaToWeb插件 File--->Settings--->Plugins--->Marketplace搜索: JBLJavaToWeb 第二步:创建普通Maven工程 第三步: 将普通Maven项目转换为Web项目...
【新手初学】SQL注入之二次注入、中转注入
二次注入 一、概念 二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。 二、原理 防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处…...
【第四节】C++设计模式(创建型模式)-Builder(建造者)模式
目录 引言 一、Builder 模式概述 二、Builder 模式举例 三、Builder 模式的结构 四、Builder 模式的实现 五、Builder 模式的优缺点 六、总结 引言 Builder 模式是一种创建型设计模式,旨在将复杂对象的构建过程与其表示分离。通过一步步构建对象,…...
本地部署AI模型 --- DeepSeek(二)---更新中
目录 FAQ 1.Failed to load the model Exit code: 18446744072635812000 FAQ 1.Failed to load the model Exit code: 18446744072635812000 问题描述: 🥲 Failed to load the model Error loading model. (Exit code: 18446744072635812000). Unkn…...
MariaDB 历史版本下载地址 —— 筑梦之路
MariaDB 官方yum源里面只有目前在维护的版本,而有时候对于老项目来说还是需要老版本的rpm包,国内很多镜像站都是同步的官方仓库,因此下载老版本也不好找,这里主要记录下从哪里可以下载到历史版本的MariaDB rpm包。 1. 官方归档网…...
Qt中使用QPdfWriter类结合QPainter类绘制并输出PDF文件
一.类的介绍 1.QPdfWriter介绍 Qt中提供了一个直接可以处理PDF的类,这就是QPdfWriter类。 (1)PDF文件生成 支持创建新的PDF文件或覆盖已有文件,通过构造函数直接绑定文件路径或QFile对象; 默认生成矢量图形PDF&#…...
使用 Promptic 进行对话管理需要具备python技术中的那些编程能力?
使用 Promptic 进行对话管理时,需要掌握一些基础的编程知识和技能,以下是详细说明: 1. Python 编程基础 Promptic 是一个基于 Python 的开发框架,因此需要具备一定的 Python 编程能力,包括: 函数定义与使用:了解如何定义函数、使用参数和返回值。类型注解:熟悉 Python…...
使用 DeepSeek 生成流程图、甘特图与思维导图:结合 Typora 和 XMind 的高效工作流
在现代工作与学习中,可视化工具如流程图、甘特图和思维导图能够极大地提升信息整理与表达的效率。本文将详细介绍如何使用 DeepSeek 生成 Mermaid 文本,结合 Typora 快速生成流程图和甘特图,并通过 Markdown 格式生成思维导图,最终…...
遗传算法初探
组成要素 编码 分为二进制编码、实数编码和顺序编码 初始种群的产生 分为随机方法、基于反向学习优化的种群产生。 基于反向学习优化的种群其思想是先随机生成一个种群P(N),然后按照反向学习方法生成新的种群OP(N),合并两个种群,得到一个新的种群S(N…...
Oracle 连接报错:“ORA-12541:TNS:no listener ”,服务组件中找不到监听服务
一、 报错: navicat连接数据库报错:ORA-12541:TNS:no listener 二、排查问题 三、 解决问题 删除Oracle安装目录下选中的配置:listener.ora 及 listener*.bak相关的 cmd,用管理员打开 执行:netca 命…...
一文详解U盘启动UEFI/Legacy方式以及GPT/MBR关系
对于装系统的老手而说一直想研究一下装系统的原理,以及面对一些问题时的解决思路,故对以前的方法进行原理上的解释,主要想理解其底层原理。 引导模式 MBR分区可以同时支持UEFI和Legacy引导,我们可以看一下微pe制作的启动盘&#…...
计算机毕设-基于springboot的汽车配件销售管理系统的设计与实现(附源码+lw+ppt+开题报告)
博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…...
嵌入式八股文(五)硬件电路篇
一、名词概念 1. 整流和逆变 (1)整流:整流是将交流电(AC)转变为直流电(DC)。常见的整流电路包括单向整流(二极管)、桥式整流等。 半波整流:只使用交流电的正…...
C语言番外篇(3)------------>break、continue
看到我的封面图的时候,部分读者可能认为这和编程有什么关系呢? 实际上这个三个人指的是本篇文章有三个部分组成。 在之前的博客中我们提及到了while循环和for循环,在这里面我们学习了它们的基本语法。今天我们要提及的是关于while循环和for…...
Mac下Python版本管理,适用于pyenv不起作用的情况
前言 声明:之前也在网上看到过可以使用pyenv来管理python版本,但由于作者的python安装路径实在是繁杂不堪,因此安装完成pyenv体验下来没有任何用处,但偶然发现vscode似乎可以看到各个python版本,因此写下这篇博客记录…...
网络安全知识--网络、网络安全产品及密码产品概述
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络结构 网络设备:交换机、路由器、负载均衡 安全设备: 通信网络安全类:通信安全、网络监测与控制 区域边界安全类:隔离类…...
WiFi相关功能使用教程(wpa_supplicant及wpa_cli)
WiFi相关功能使用教程(wpa_supplicant及wpa_cli) 在之前的博客文中,我们已经成功交叉编译了wpa_supplicant和wpa_cli相关文件。 此篇文章中我们将介绍如何使用和配置WiFi模块。 先将生成的可执行文件拷贝到设备里 采用TFTP的方式拷贝到设备中并全都加上可执行权限…...
CentOS7 离线安装 Postgresql 指南
一、背景 服务器通常都是离线内网环境,想要通过联网方式一键下载安装 Postgresql 不太现实,本文将介绍如何在 CentOS7 离线安装 Postgresql,以及遇到困难如何解决。 二、安装包下载 先在本地下载好 rpm 包,再通过 ftp 上传到服…...
