Flowable工作流 -> 数据存储 -> 表结构梳理

一 前言        

初学工作流,我发现集成SpringBoot之后,工作流的各项操作都比较简单,引擎,工作Service这些,直接自动装配即可。流程的定义(部署),流程实例启动,实例任务的审核人的拾取以及更换,任务的激活与挂起......这些操作实际上都比较简单,很容易明白。

        这些比较基础的在我的上一个博客当中有记录,希望对大家有帮助。

Flowable工作流 - 基础知识(后续继续更新)-CSDN博客

        反而是数据库!!!如果不明白这些表张是干什么的,我感觉对于之后想要使用工作流进行开发,再或者说是工作流相关的项目数据的维护,都很难,要命的是,我找不到数据在哪放 = -------- =

        因此我写这篇博客,将工作的部分流程结合对应的表进行说明,我想这样更加清晰一些叭。里面有我对于工作流程的一些思考,疑问,希望各位大佬看的时候也能给我指点一二,有错误请多多指正!

        中间会出现多张表在上面已经出现过了,但是依旧存在,EMMM,这个主要是为了理解当前我们的操作,对于流程会产生何种影响,因此这样布局。

        我的流程图如下所示:

        如果需要这份静态XML文件,放置在上面了,需要大佬的自己拿即可。

二 流程定义

    @Test
    void contextLoads() {
        Deployment deploy = repositoryService.createDeployment()
                .name("并行网关")
                .addClasspathResource("flowable-process/day01_base_study/BingXingDemo1.bpmn20.xml")
                .deploy();
        System.out.println(deploy);
    }

        流程定义主要与以下几张表有关联:

        1.act_re_deployment

                顾名思义,就是用来存放我们在部署流程的时候的信息,比如在上面,我设置了对应部署流程的名称,还有其在我的项目下的路径,这些详细信息就记录在这张表中。

        2. act_re_procdef

                流程表,这张表对应的是我们流程图当中的信息,即我们在绘制流程图的时候所填写的当前流程图的名称,KEY值,以及描述信息等。记录了我们当前流程实例的执行情况,是否执行完毕,用时多少,什么时候执行结束等。

三 流程实例启动

    void startProcess() {
        //流程对象的创建需要我们指定创建的对应流程定义的ID,也就是在act_re_procdef当中
        runtimeService.startProcessInstanceById("BingXingDemo1:1:a9883769-a730-11ef-8765-14ac60037ef4");
    }

         流程实例启动主要与以下几张表有关

        1.act_ru_task:

                记录我们当前流程实例需要处理的第一个任务节点信息,只有审批之后才会显示下一个任务节点信息。

        2.act_ru_execution:

                用于记录我们当前的任务进行的状态,不同任务节点之间的转换,我们可以通过这张表查询某个流程实例的执行流程,达到追踪的效果。

        3.act_ru_identitylink:

                用来记录当前流程任务的审批人,当前也可以是对应的候选人,通过类型字段,对于这些角色进行区分。这里我一并将介绍。

        4.act_hi_identitylink:

                这张表当中存放着对应历史任务的各个用户信息,并且通过类型进行区分,有审批人以及候选人两种因为审批人本身也就是候选人,所以其在保存数据的时候,自动的将当前任务的执行用户,当作审批人以及候选人两种对待。

        5.act_hi_actinst:

                历史活动表,该表记录了所有已经完成的流程实例的任务,包括任务、网关、事件等各种类型的活动。通过查询这张表,可以了解某个流程实例在执行过程中已完成的具体活动情况,并且还设置有对应任务的先后顺序。还包括对应任务的类型,也就是在我们设置的流程图当中各个图形的类型。通常与act_hi_procinst以及act_hi_taskinst相互关联,从而能通过这几张表查询当前流程实例的一整个执行流程

        6.act_hi_comment

                其是 Activiti 工作流引擎中用于存储历史评论的表。例如对于当前任务的意见和改建建议等。它记录与流程实例和任务相关的评论信息。对于一些行为,比如果流程的审批操作,其会自动记录,这也算作是一种评论形式。不同的评论之间,有对应的类型TYPE,以及ACTION对于不同的评论进行区分。

四 审批人重设

    void setNewAssignee(){
        List<Task> list = taskService.createTaskQuery()
                .taskAssignee("wangwu")
                .list();
        for (Task task : list) {
            taskService.setAssignee(task.getId(), "zhangsan");
        }
    }

        审批人重设主要与以下几张表有关:

        

        1.act_ru_task:

                首当其冲,修改对应的审批人之后,当前正在执行任务的审批人自然也会改变

        2.act_ru_identitylink:

                跟我想的不一样,如果我们修改当前任务对应的审批人之后,运行时的用户身份也会改变,我自己 = - = 以为修改之后,我们当前执行任务的审批人的用户会改变,也就是在原本基础上的修改操作。但是实际上,却是插入了一条新的数据。都是参与人,并且任务ID均指向当前任务

        3.act_his_identitylink:

        = - = 这个历史任务跟上面的一样,对于改变了当前的审批人之后,也是插入的两条新的数据(因为这个用户又是审批人,又是候选人)

        疑惑点:

                令我感到奇怪的一点是,我明明修改了此时运行中的任务的审批人,但是实际上受到影响的只有以上三个比较重要的表。其他的表当中有关审批人的数据并没有改变。
                例如act_hi_actinst当中的审批人,依旧是wangwu。经查询资料,显示这些属于历史信息,一旦设置,无法修改。但是,将来如果当前流程实例都执行完毕了,我查询当前流程的执行情况,这个审批人还是我们第一次的,修改之后的没有生效,难道不会造成数据不一致吗?还是说需要我们需要针对自己的业务需要,自己针对这些表中的字段自动修改,或者自定义工作流设计。
                或者有更好的解决方案吗?求解答 !^  !

五 任务审批

    void completeTask(){
        //基层审批
        //taskService.complete("79d40862-a683-11ef-ab70-14ac60037ef4");
        //人事审批
        //taskService.complete("89f5d222-a683-11ef-9ce0-14ac60037ef4");
        //部门审批
        //taskService.complete("89f66e66-a683-11ef-9ce0-14ac60037ef4");
        //只有当上面两个执行完成之后才会展示总经理审批!!!
        //总经理审批
        taskService.complete("0a1bc4b3-a732-11ef-9a83-14ac60037ef4");
    }

        完成当前任务审批之后,会产生以下影响

        1.act_ru_task:

        展示当前流程执行到的任务节点信息!!!并且是当前任务完成之后,才会展示流程的下一条任务!!!

        疑惑点        

        因为我在初学的时候认为这些任务应当是同时展示的,例如,我的流程当中,第一个流程执行的用户是zhangsan,下一个是lisi通过对于当前任务的条件查询,也就是对于act_ru_task下的数据的查询,我获得了zhangsan工作时对应的任务id,但是查询lisi却查询不到对应的任务ID。

        = - = 我有些不解,如果这样,我如何在工作当中提前获知我需要做什么?难带一直等到轮到我,才能知道我的工作吗?我认为这是不合理的,如果我的业务需要这种透明化的业务流程管控,我想我会再自定义一个工作流设计。或者还有其他解决思路吗?


        2.act_ru_identitylink:

                记录当前任务对应的用户信息,如果是并行流程的话,同样将对应的任务的用户进行记录。

        3.act_hi_identitylink:

                历史记录当前任务对应的用户信息,如果是并行流程的话,同样将对应的任务的用户进行记录。

        4.act_hi_actint:

                新增最新的流程实例任务的相关信息,同样的,与ct_hi_procinst以及act_hi_taskinst之间相互关联,以确保流程实例进行时信息的正确记录。

        本次仅记录以上几个比较简单的任务的相关表结构,希望大家能自己实操一下,看看对应的流程会对于表数据产生怎么样的影响。谢谢各位大佬!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器翻译基础与模型 之一: 基于RNN的模型

一、机器翻译发展历程 基于规则的-->基于实例的-->基于统计方法的-->基于神经网络的 传统统计机器翻译把词序列看作离散空间里的由多个特征函数描述的点&#xff0c;类似 于 n-gram 语言模型&#xff0c;这类模型对数据稀疏问题非常敏感。神经机器翻译把文字序列表示…

【优选算法篇】分治乾坤,万物归一:在重组中窥见无声的秩序

文章目录 分治专题&#xff08;二&#xff09;&#xff1a;归并排序的核心思想与进阶应用前言、第二章&#xff1a;归并排序的应用与延展2.1 归并排序&#xff08;medium&#xff09;解法&#xff08;归并排序&#xff09;C 代码实现易错点提示时间复杂度和空间复杂度 2.2 数组…

DrugLLM——利用大规模语言模型通过 Few-Shot 生成生物制药小分子

摘要 小分子由于能够与特定的生物靶点结合并调节其功能&#xff0c;因此在药物发现领域发挥着至关重要的作用。根据美国食品和药物管理局&#xff08;FDA&#xff09;过去十年的审批记录&#xff0c;小分子药物占所有获批上市药物的 76%。小分子药物的特点是合成相对容易&…

「一」HarmonyOS端云一体化概要

关于作者 白晓明 宁夏图尔科技有限公司董事长兼CEO、坚果派联合创始人 华为HDE、润和软件HiHope社区专家、鸿蒙KOL、仓颉KOL 华为开发者学堂/51CTO学堂/CSDN学堂认证讲师 开放原子开源基金会2023开源贡献之星 「目录」 「一」HarmonyOS端云一体化概要 「二」体验HarmonyOS端云一…

架构师:使用 Atomix 实现分布式协调服务的技术指南

1、简述 Atomix 是一个强大的分布式协调框架,提供了分布式数据结构、协调工具和一致性协议,帮助开发者实现高可用、强一致性的分布式系统。它构建于 Raft 和 Paxos 等一致性协议之上,支持创建分布式锁、Leader 选举、分布式 Map、消息发布-订阅等功能,常用于微服务架构和分…

根据条件 控制layui的table的toolbar的按钮 显示和不显示

部分代码&#xff1a; <!-----查询条件-----> <input type"date" id"StartDate" onchange"PageList()" /> <input type"date" id"EndDate" onchange"PageList()" /><!-----表格Table-----&…

100.【C语言】数据结构之二叉树的堆实现 上

目录 1.顺序结构 2.示意图 ​编辑 从物理结构还原为逻辑结构的方法 3.父子节点编号的规律 4.顺序存储的前提条件 5.堆的简介 堆的定义 堆的两个重要性质 小根堆和大根堆 6.堆的插入 7.堆的实现及操作堆的函数 堆的结构体定义 堆初始化函数HeapInit 堆插入元素函…

CommonsBeanutils与Shiro发序列化利用的学习

一、前言 前面的学习中&#xff0c;过了一遍cc1-cc7的利用链&#xff0c;在CC2的利用链中&#xff0c;学习了 java.util.PriorityQueue&#xff0c;它在Java中是一个优先队列&#xff0c;队列中每一个元素都有自己的优先级。在反序列化这个对象时&#xff0c;为了保证队列顺序…

OpenGL入门008——环境光在片段着色器中的应用

本节将在片段着色器中应用环境光照(Ambient) 文章目录 一些概念光照模型环境光漫反射镜面反射总结 实战简介dependencieslightShader.vslightShader.fsshader.vsshader.fs utilsCube.hCube.cpp main.cppCMakeLists.txt最终效果 一些概念 光照模型 环境光 概述&#xff1a; 在…

cesium for unity的使用

先聊聊导入 看到这里的因该能够知道&#xff0c;官网以及网上绝大多数的方法都导入不进来&#xff0c;那么解决方法如下: 两个链接&#xff1a;按照顺序依次下载这两个tgz和zip&#xff0c;其中tgz为主要部分&#xff0c;zip为示例工程项目 如果您要查看示例工程项目的话&am…

stm32cubemx+VSCODE+GCC+makefile 开发环境搭建

title: stm32cubemxVSCODEGCCmakefile 开发环境搭建 tags: FreertosHalstm32cubeMx 文章目录 内容往期内容导航第一步准备环境vscode 插件插件配置点灯 内容 往期内容导航 第一步准备环境 STM32CubeMXVSCODEMinGWOpenOcdarm-none-eabi-gcc 然后把上面下载的软件 3 4 5 bin 文…

20241120-Milvus向量数据库快速体验

目录 20241120-Milvus向量数据库快速体验Milvus 向量数据库pymilvus内嵌向量数据库模式设置向量数据库创建 Collections准备数据用向量表示文本插入数据 语义搜索向量搜索带元数据过滤的向量搜索查询通过主键搜索 删除实体加载现有数据删除 Collections了解更多 个人主页: 【⭐…

【Axure高保真原型】3D农业管理大屏可视化案例

今天和大家分享3D农业管理大屏可视化案例的原型模板&#xff0c;里面包括重点指标分析、产量分析、种类分析、分布分析、收入分析和销售分析&#xff0c;具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原型效果】 【Axure高保真原型】3D农业管理大屏可视化案例 【原…

使用 LSTM(长短期记忆网络) 模型对时间序列数据(航空旅客人数数据集)进行预测

代码功能 数据准备 加载数据&#xff1a;从公开的航空旅客人数数据集&#xff08;Airline Passengers Dataset&#xff09;中读取时间序列数据。 对数变换和平稳化&#xff1a;对数据应用 log1p 函数减少趋势和波动&#xff0c;使模型更容易学习规律。 归一化处理&#xff1a;…

Redis Search系列 - 第七讲 Windows(CygWin)编译Friso

目录 一、背景二、安装CygWin三、编译Friso四、运行Friso五、Friso分词效果测试 一、背景 最近在做RedisSearch的中文分词效果调研&#xff0c;底层的中文分词插件使用的就是Friso&#xff0c;目前手里的Linux环境上yum镜像仓库有问题导致没法安装gcc&#xff0c;又急于验证Fr…

【AI大模型引领变革】探索AI如何重塑软件开发流程与未来趋势

文章目录 每日一句正能量前言流程与模式介绍【传统软件开发 VS AI参与的软件开发】一、传统软件开发流程与模式二、AI参与的软件开发流程与模式三、AI带来的不同之处 结论 AI在软件开发流程中的优势、挑战及应对策略AI在软件开发流程中的优势面临的挑战及应对策略 结论 后记 每…

智领未来: 宏集物联网HMI驱动食品与包装行业迈向智能化新高度

行业现状与挑战 食品与包装行业对设备的自动化、智能化水平要求日益提高&#xff0c;特别是瓶装和灌装生产线需要实现高速、高效的生产。此外&#xff0c;该行业还需遵循严格的卫生标准和安全规范&#xff0c;以保证产品质量符合消费者需求。在提高生产效率的同时&#xff0c;…

LeetCode 热题100(九)【图论】(待更新)

目录 9.图论 9.1岛屿数量&#xff08;中等&#xff09; 9.2腐烂的橘子&#xff08;中等&#xff09; 9.3课程表&#xff08;中等&#xff09; 9.4实现 Trie (前缀树)&#xff08;中等&#xff09; 9.图论 9.1岛屿数量&#xff08;中等&#xff09; 题目描述&#xff1a;…

数据结构--跳表

跳表 原理实现 原理 跳表&#xff08;skiplist&#xff09;是一种链表&#xff0c;而链表查询的时间复杂度为O(n)&#xff0c;为了优化查询效率&#xff0c;我们可以让每相邻两个节点升高一层&#xff0c;增加一个指针&#xff0c;让指针指向下下个节点&#xff1a; 这样所有…

ChatGPT高级语音模式正在向Web网页端推出!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…