flowable 全生命周期涉及到的api及mysql表

news2025/2/25 4:32:40

要了解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表中。

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

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

相关文章

Golang | 每日一练 (3)

💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Golang | 每日一练 (3)题目参考答案map 实现原理hmapb…

Docker入门及基本概念

让我们从最基础的概念开始逐步理解。假设你已经准备好了docker 环境。 第一步,让我们先通过实际操作来看看当前系统中的镜像(images)和容器(containers)状态: docker images # 查看所有镜像 docker ps -a # 查看所有容器(包括未运行…

设备唯一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医院预约挂号小程序系统 效果如下: 小程序主页面 帖子页面 医生账号页面 留言内容页面 管理员主页面 用户管理页面 我的挂号页面 医生管理页面 研究背景 随着信息技术的飞速发展和互联网医疗的兴起,传统的医疗服务模式正面临着深刻的变…

如何手动设置u-boot的以太网的IP地址、子网掩码、网关信息、TFTP的服务器地址,并进行测试

设置IP地址 运行下面这条命令设置u-boot的以太网的IP地址: setenv ipaddr 192.168.5.9设置子网掩码 运行下面这条命令设置u-boot的以太网的子网掩码: setenv netmask 255.255.255.0设置网关信息 运行下面这条命令设置u-boot的网关信息: …

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&#…

使用 DeepSeek 生成流程图、甘特图与思维导图:结合 Typora 和 XMind 的高效工作流

在现代工作与学习中,可视化工具如流程图、甘特图和思维导图能够极大地提升信息整理与表达的效率。本文将详细介绍如何使用 DeepSeek 生成 Mermaid 文本,结合 Typora 快速生成流程图和甘特图,并通过 Markdown 格式生成思维导图,最终…

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版本,因此写下这篇博客记录…

网络安全知识--网络、网络安全产品及密码产品概述

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络结构 网络设备:交换机、路由器、负载均衡 安全设备: 通信网络安全类:通信安全、网络监测与控制 区域边界安全类:隔离类…