Flowable进阶学习(三)流程、流程实例挂起与激活;启动、处理、结束流程的原理以及相关表结构与变动

news2024/11/16 4:40:03

文章目录

  • 流程挂起与激活
  • 流程实例挂起与激活
  • 启动、处理、结束流程的原理
    • 一、启动流程的原理
      • 启动一个流程实例时涉及到的表及表结构:
        • ACT_RU_EXECUTION 运行时流程执行实例
        • ACT_RU_IDENTITYLINK 运行时用户关系信息
        • ACT_RU_TASK 运行时任务表
        • ACT_RU_VARIABLE 运行时变量表
    • 二、处理流程的原理及相关表变动
    • 三、流程结束的原理以及相关表变动
      • ACT_HI_PROCINST:历史流程实例表
      • ACT_HI_TASKINST:历史任务实例表(流程节点)
      • ACT_HI_VARINST:历史流程变量表
      • ACT_HI_IDENTITYLINK:历史用户关系表
      • ACT_HI_ACTINST:历史活动实例表(流程定义相关)

流程挂起与激活

部署的流程其默认状态为激活状态,若暂时不想使用该定义的流程,则可以进行挂起操作。流程定义为挂起状态时,该流程定义将不允许启动新的流程实例。且当前该流程定义下的流程实例全部挂起暂停执行。

 /**
 * 测试流程挂起与激活
 */
@Test
public void test_Suspended(){
    RepositoryService repositoryService = processEngine.getRepositoryService();
    // 获取对应的流程定义信息
    ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
            .processDefinitionId("MyProcess:1:6").singleResult();
    // 获取当前流程定义的状态信息
    System.out.println("processDefinition.isSuspended() = " + processDefinition.isSuspended());
    if(processDefinition.isSuspended()){
        // 当前流程挂起,进行激活
        repositoryService.activateProcessDefinitionById(processDefinition.getId());
        System.out.println("激活流程===> " + processDefinition.getName() );
    }else {
        //  当前流程激活,进行挂起
        repositoryService.suspendProcessDefinitionById(processDefinition.getId());
        System.out.println("挂起流程===> " + processDefinition.getName() );
    }
}

/**
 * 测试启动流程
 * 当流程挂起的时候,执行启动流程操作会报错
 * org.flowable.engine.common.api.FlowableException: Cannot start process instance. Process definition MyProcess (id = MyProcess:1:6) is suspended
 */
@Test
public void test_runProcess(){
    RuntimeService runtimeService = processEngine.getRuntimeService();
    ProcessInstance processInstance = runtimeService.startProcessInstanceById("MyProcess:1:6");
    System.out.println("processInstance.getActivityId() = " + processInstance.getActivityId());
}

流程实例挂起与激活

在这里插入图片描述

启动、处理、结束流程的原理

一、启动流程的原理

在这里插入图片描述
当我们启动了一个流程实例后,会在ACT_RU_*对应的表结构中操作,运行时实例涉及的表结构共10张:

  • ACT_RU_DEADLETTER_JOB 正在运行的任务表
  • ACT_RU_EVENT_SUBSCR 运行时事件
  • ACT_RU_EXECUTION 运行时流程执行实例
  • ACT_RU_HISTORY_JOB 历史作业表
  • ACT_RU_IDENTITYLINK 运行时用户关系信息
  • ACT_RU_JOB运行时作业表
  • ACT_RU_SUSPENDED_JOB 暂停作业表
  • ACT_RU_TASK 运行时任务表
  • ACT_RU_TIMERJOB定时作业表
  • ACT_RU_VARIABLE 运行时变是表

启动一个流程实例时涉及到的表及表结构:

ACT_RU_EXECUTION 运行时流程执行实例

ID_  |REV_|PROC_INST_ID_|BUSINESS_KEY_|PARENT_ID_|PROC_DEF_ID_   |SUPER_EXEC_|ROOT_PROC_INST_ID_|ACT_ID_                                 |IS_ACTIVE_|IS_CONCURRENT_|IS_SCOPE_|IS_EVENT_SCOPE_|IS_MI_ROOT_|SUSPENSION_STATE_|CACHED_ENT_STATE_|TENANT_ID_|NAME_|START_ACT_ID_|START_TIME_            |START_USER_ID_|LOCK_TIME_|IS_COUNT_ENABLED_|EVT_SUBSCR_COUNT_|TASK_COUNT_|JOB_COUNT_|TIMER_JOB_COUNT_|SUSP_JOB_COUNT_|DEADLETTER_JOB_COUNT_|VAR_COUNT_|ID_LINK_COUNT_|CALLBACK_ID_|CALLBACK_TYPE_|
-----+----+-------------+-------------+----------+---------------+-----------+------------------+----------------------------------------+----------+--------------+---------+---------------+-----------+-----------------+-----------------+----------+-----+-------------+-----------------------+--------------+----------+-----------------+-----------------+-----------+----------+----------------+---------------+---------------------+----------+--------------+------------+--------------+
10001|   1|10001        |qj1002       |          |MyHolidayUI:1:7|           |10001             |                                        |         1|             0|        1|              0|          0|                1|                 |whx       |     |startEvent1  |2023-01-19 12:58:59.447|              |          |                1|                0|          0|         0|               0|              0|                    0|         0|             0|            |              |
10005|   1|10001        |             |10001     |MyHolidayUI:1:7|           |10001             |sid-78EFF658-A003-460A-950A-764DC53C913F|         1|             0|        0|              0|          0|                1|                 |whx       |     |             | 2023-01-19 12:58:59.49|              |          |                1|                0|          1|         0|               0|              0|                    0|         0|             0|            |              |

在这里插入图片描述

ACT_RU_IDENTITYLINK 运行时用户关系信息

ID_  |REV_|GROUP_ID_|TYPE_      |USER_ID_|TASK_ID_|PROC_INST_ID_|PROC_DEF_ID_|SCOPE_ID_|SCOPE_TYPE_|SCOPE_DEFINITION_ID_|
-----+----+---------+-----------+--------+--------+-------------+------------+---------+-----------+--------------------+
10010|   1|         |participant|whx     |        |10001        |            |         |           |                    |
-- 其中 TYPE_字段的类型来自类:org.flowable.identitylink.service.IdentityLinkType
assignee指派人、candidate候选人、owner所有人、starter启动人、participant参与人

在这里插入图片描述

ACT_RU_TASK 运行时任务表

ID_  |REV_|EXECUTION_ID_|PROC_INST_ID_|PROC_DEF_ID_   |TASK_DEF_ID_|SCOPE_ID_|SUB_SCOPE_ID_|SCOPE_TYPE_|SCOPE_DEFINITION_ID_|NAME_ |PARENT_TASK_ID_父任务ID|DESCRIPTION_|TASK_DEF_KEY_                           |OWNER_|ASSIGNEE_指派|DELEGATION_委托|PRIORITY_|CREATE_TIME_           |DUE_DATE_|CATEGORY_|SUSPENSION_STATE_是是否挂起|TENANT_ID_租户id|FORM_KEY_表单key|CLAIM_TIME_|IS_COUNT_ENABLED_|VAR_COUNT_|ID_LINK_COUNT_|SUB_TASK_COUNT_|
-----+----+-------------+-------------+---------------+------------+---------+-------------+-----------+--------------------+------+---------------+------------+----------------------------------------+------+---------+-----------+---------+-----------------------+---------+---------+-----------------+----------+---------+-----------+-----------------+----------+--------------+---------------+
10008|   1|10005        |10001        |MyHolidayUI:1:7|            |         |             |           |                    |提交请假申请|               |            |sid-78EFF658-A003-460A-950A-764DC53C913F|      |whx      |           |       50|2023-01-19 12:58:59.495|         |         |                1|whx       |         |           |                1|         0|             0|              0|

在这里插入图片描述

ACT_RU_VARIABLE 运行时变量表

在这里插入图片描述
在这里插入图片描述

二、处理流程的原理及相关表变动

/**
* 带参的流程完成
* act_ru_task表记录的是当前流程实例所运行的节点。即待办任务
*/
@Test
public void test_runCompleteWithParams() {
   TaskService taskService = processEngine.getTaskService();
   Task task = taskService.createTaskQuery()
           .processInstanceId("10001").taskAssignee("whx").singleResult();
   Map<String, Object> processVariables = task.getProcessVariables();
   processVariables.forEach((k, v) -> {
       System.out.println(k + "~" + v);
   });
   processVariables.put("approved", true);
   processVariables.put("nrOfHolliday", 7);
   taskService.complete(task.getId(), processVariables);
}
  • ACT_RU_EXECUTION 运行时流程执行实例(不会做修改)
  • ACT_RU_IDENTITYLINK 运行时用户关系信息(会新增一条处理记录)
    在这里插入图片描述
  • ACT_RU_TASK 运行时任务表(删除已完成的任务,新增待办)
    ID_  |REV_|EXECUTION_ID_|PROC_INST_ID_|PROC_DEF_ID_   |TASK_DEF_ID_|SCOPE_ID_|SUB_SCOPE_ID_|SCOPE_TYPE_|SCOPE_DEFINITION_ID_|NAME_ |PARENT_TASK_ID_|DESCRIPTION_|TASK_DEF_KEY_                           |OWNER_|ASSIGNEE_|DELEGATION_|PRIORITY_|CREATE_TIME_           |DUE_DATE_|CATEGORY_|SUSPENSION_STATE_|TENANT_ID_|FORM_KEY_|CLAIM_TIME_|IS_COUNT_ENABLED_|VAR_COUNT_|ID_LINK_COUNT_|SUB_TASK_COUNT_|
    -----+----+-------------+-------------+---------------+------------+---------+-------------+-----------+--------------------+------+---------------+------------+----------------------------------------+------+---------+-----------+---------+-----------------------+---------+---------+-----------------+----------+---------+-----------+-----------------+----------+--------------+---------------+
    12503|   1|10005        |10001        |MyHolidayUI:1:7|            |         |             |           |                    |领导审批  |               |            |sid-2C6EBB59-7020-4067-B7F6-03A1F2494C5D|      |huathy   |           |       50|2023-01-20 14:41:56.644|         |         |                1|whx       |         |           |                1|         0|             0|              0|
    
  • ACT_RU_VARIABLE 运行时变量表(流程变量的更新)
    在这里插入图片描述

三、流程结束的原理以及相关表变动

当一个流程完成处理的时候,会删除上述的四张运行时表ACT_RU_。中当前流程的数据,并转入历史表中。ACT_HI_
所涉及到的表结构:

ACT_HI_PROCINST:历史流程实例表

ID_  |REV_|PROC_INST_ID_|BUSINESS_KEY_|PROC_DEF_ID_   |START_TIME_            |END_TIME_              |DURATION_|START_USER_ID_|START_ACT_ID_|END_ACT_ID_                             |SUPER_PROCESS_INSTANCE_ID_|DELETE_REASON_|TENANT_ID_|NAME_|CALLBACK_ID_|CALLBACK_TYPE_|
-----+----+-------------+-------------+---------------+-----------------------+-----------------------+---------+--------------+-------------+----------------------------------------+--------------------------+--------------+----------+-----+------------+--------------+
10001|   2|10001        |qj1002       |MyHolidayUI:1:7|2023-01-19 12:58:59.447|2023-01-21 06:02:51.449|147832002|              |startEvent1  |sid-BFA54F29-3329-4DA5-9F55-AF278B5508EC|                          |              |whx       |     |            |              |

ACT_HI_TASKINST:历史任务实例表(流程节点)

ID_  |REV_|PROC_DEF_ID_   |TASK_DEF_ID_|TASK_DEF_KEY_                           |PROC_INST_ID_|EXECUTION_ID_|SCOPE_ID_|SUB_SCOPE_ID_|SCOPE_TYPE_|SCOPE_DEFINITION_ID_|NAME_ |PARENT_TASK_ID_|DESCRIPTION_|OWNER_|ASSIGNEE_|START_TIME_            |CLAIM_TIME_|END_TIME_              |DURATION_|DELETE_REASON_|PRIORITY_|DUE_DATE_|FORM_KEY_|CATEGORY_|TENANT_ID_|LAST_UPDATED_TIME_     |
-----+----+---------------+------------+----------------------------------------+-------------+-------------+---------+-------------+-----------+--------------------+------+---------------+------------+------+---------+-----------------------+-----------+-----------------------+---------+--------------+---------+---------+---------+---------+----------+-----------------------+
10008|   2|MyHolidayUI:1:7|            |sid-78EFF658-A003-460A-950A-764DC53C913F|10001        |10005        |         |             |           |                    |提交请假申请|               |            |      |whx      |2023-01-19 12:58:59.515|           |2023-01-20 14:41:56.625| 92577110|              |       50|         |         |         |whx       |2023-01-20 14:41:56.625|
12503|   2|MyHolidayUI:1:7|            |sid-2C6EBB59-7020-4067-B7F6-03A1F2494C5D|10001        |10005        |         |             |           |                    |领导审批  |               |            |      |huathy   |2023-01-20 14:41:56.658|           | 2023-01-21 06:02:51.33| 55254672|              |       50|         |         |         |whx       | 2023-01-21 06:02:51.33|

ACT_HI_VARINST:历史流程变量表

在这里插入图片描述

ACT_HI_IDENTITYLINK:历史用户关系表

在这里插入图片描述

ACT_HI_ACTINST:历史活动实例表(流程定义相关)

D_  |REV_|PROC_DEF_ID_   |PROC_INST_ID_|EXECUTION_ID_|ACT_ID_                                 |TASK_ID_|CALL_PROC_INST_ID_|ACT_NAME_|ACT_TYPE_ |ASSIGNEE_|START_TIME_            |END_TIME_              |DURATION_|DELETE_REASON_|TENANT_ID_|
----+----+---------------+-------------+-------------+----------------------------------------+--------+------------------+---------+----------+---------+-----------------------+-----------------------+---------+--------------+----------+
0006|   1|MyHolidayUI:1:7|10001        |10005        |startEvent1                             |        |                  |         |startEvent|         |2023-01-19 12:58:59.491|2023-01-19 12:58:59.492|        1|              |whx       |
0007|   2|MyHolidayUI:1:7|10001        |10005        |sid-78EFF658-A003-460A-950A-764DC53C913F|10008   |                  |提交请假申请   |userTask  |whx      |2023-01-19 12:58:59.495|2023-01-20 14:41:56.639| 92577144|              |whx       |
2502|   2|MyHolidayUI:1:7|10001        |10005        |sid-2C6EBB59-7020-4067-B7F6-03A1F2494C5D|12503   |                  |领导审批     |userTask  |huathy   |2023-01-20 14:41:56.644|2023-01-21 06:02:51.375| 55254731|              |whx       |
5001|   1|MyHolidayUI:1:7|10001        |10005        |sid-BFA54F29-3329-4DA5-9F55-AF278B5508EC|        |                  |         |endEvent  |         |2023-01-21 06:02:51.408|2023-01-21 06:02:51.411|        3|              |whx       |

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

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

相关文章

过滤器Filter总结

过滤器Filter1. 简介2. 快速入门3. 执行流程4. 使用细节4.1 拦截路径4.2 过滤器链5. 案例5.1 需求5.2 LoginFilter1. 简介 过滤器是JavaWeb三大组件之一&#xff08;Servlet、Filter&#xff0c;Listner&#xff09;&#xff1b; 作用&#xff1a; 把对资源&#xff08;servl…

Ubuntu22.04 安装 ssh

文章目录Ubuntu22.04 安装 ssh一、 环境配置二、 启动远程连接三、 开放端口四、 远程连接Ubuntu22.04 安装 ssh 一、 环境配置 安装 Ubuntu 系统后&#xff0c;我们首先需要配置管理员 root 用户&#xff1a; sudo passwd root然后&#xff0c;进行软件源的更换&#xff1a…

14 Java集合(Map集合+HashMap+泛型使用+集合面试题)

集合14.11 Map集合14.11.1 Map集合特点14.11.2 Map集合体系结构14.12 HashMap14.12.1 HashMap基本使用14.12.2 HashMap实际应用14.12.3 HashMap练习14.12.4 HashMap底层实现原理14.12.5 put的过程原码14.12.6 resize过程原码14.12.7 get的过程原码14.13 HashTable14.14 泛型高级…

5-1中央处理器-CPU的功能和基本结构

文章目录一.CPU的功能二.CPU的基本结构&#xff08;一&#xff09;运算器1.运算器的基本组成2.专用数据通路方式3.CPU内部单总线方式&#xff08;二&#xff09;控制器1.基本组成2.实现过程&#xff08;三&#xff09;寄存器一.CPU的功能 中央处理器&#xff08;CPU&#xff0…

并查集的入门与应用

目录 一、前言 二、并查集概念 1、并查集的初始化 2、并查集的合并 3、并查集的查找 4、初始化、查找、合并代码 5、复杂度 二、路径压缩 三、例题 1、蓝桥幼儿园&#xff08;lanqiaoOJ题号1135&#xff09; 2、合根植物&#xff08;2017年决赛&#xff0c;lanqiaoO…

SQL注入篇 - 布尔盲注及延时注入

数据来源 盲注 什么是盲注&#xff1a; 布尔盲注原理 布尔盲注流程 手工盲注思路&#xff08;以下的文章参考&#xff1a;DVWA-sql注入&#xff08;盲注&#xff09; - N0r4h - 博客园&#xff09; 手工盲注的过程&#xff0c;就像你与一个机器人聊天&#xff0c;这个机器人知…

DGSEA | GSEA做完了不要停,再继续比较一下有意义的通路吧!~

1写在前面 GSEA大家都会用了&#xff0c;但GSEA也有它自己的缺点&#xff0c;就是不能比较两个基因集或通路的富集情况。&#x1f912; 今天介绍一个Differential Gene Set Enrichment Analysis (DGSEA)&#xff0c;可以量化两个基因集的相对富集程度。&#x1f609; 2用到的包…

Java中的位运算及其常见的应用

文章目录1、位运算1.1 原码、反码、补码1.2 位运算符2、位运算的应用2.1 取模运算2.2 奇偶性判断2.3 交换变量的值2.4 加法运算1、位运算 1.1 原码、反码、补码 计算机中所有数据的存储和运算都是以二进制补码的形式进行的。a —> 97&#xff0c;A —> 65&#xff0c;‘…

深入学习Vue.js(十二)编译器

模板DSL的编译器 1.编译器概述 编译器实际上是一段程序&#xff0c;他用来将一种语言A翻译为另一种语言B。其中&#xff0c;A被称为源代码&#xff0c;B被称为目标代码。编译器将源代码翻译为目标代码的过程被称为编译。完整的编译过程通常包含词法分析、语法分析、语义分析、…

软件测试——测试用例

作者&#xff1a;~小明学编程 文章专栏&#xff1a;测试开发 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 测试用例的设计方法 等价类 边界值 错误猜测法 判定表法&#xff08;使用于关系组合&#xff09; 设计步骤 具体例子 正交法 场景设计法…

Redis相关简介

1. Redis 简介 在这个部分&#xff0c;我们将学习以下3个部分的内容&#xff0c;分别是&#xff1a; ◆ Redis 简介&#xff08;NoSQL概念、Redis概念&#xff09; ◆ Redis 的下载与安装 ◆ Redis 的基本操作 1.1 NoSQL概念 1.1.1 问题现象 在讲解NoSQL的概念之前呢&am…

8. R语言画:散点图、直方图、条形图、箱线图、小提琴图、韦恩图

b站课程视频链接&#xff1a; https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新&#xff0c;但是要花钱&#xff0c;我花99&#x1f622;&#x1f622;元买了&#xff0c;感觉讲的没问题&#xff0c;就是知识点结构有点乱&#xff0c;有点废话&#xff09;&…

九大数据分析方法-综合型分析方法以及如何使用这九大分析方法

文章目录3 综合型分析方法3.1 相关性分析法3.1.1 直接相关3.1.2 间接相关3.2标签分析法3.3 MECE法4 如何使用九大方法本文来源&#xff0c;为接地气的陈老师的知识星球&#xff0c;以及付同学的观看笔记。3 综合型分析方法 3.1 相关性分析法 相关性分析法&#xff1a;寻找指标…

ROS2机器人编程简述humble-第二章-Executors .3.5

ROS2机器人编程简述humble-第二章-Parameters .3.4由于ROS2中的节点是C对象&#xff0c;因此一个进程可以有多个节点。事实上&#xff0c;在许多情况下&#xff0c;这样做是非常有益的&#xff0c;因为当通信处于同一进程中时&#xff0c;可以通过使用共享内存策略来加速通信。…

freeglut 在mfc 下的编译

freeglut 是OpenGL Utility Toolkit (GLUT) library 的替代版本&#xff0c;glut 应用广阔&#xff0c;但比较陈旧&#xff0c;很久没有更新。 我原来的opengl 用的是glut&#xff0c; 想更新到64位版本&#xff0c;怎么也找不到合适的下载。最后找到完全替代版本freeglut。fre…

【Linux】线程概念 | 互斥

千呼万唤始出来&#xff0c;终于到多线程方面的学习了&#xff01; 所用系统Centos7.6 本文的源码&#x1f449;【传送门】 最近主要是在我的hexo个人博客上更新&#xff0c;csdn的更新会滞后 文章目录1.线程的概念1.1 执行流1.2 线程创建时做了什么&#xff1f;1.3 内核源码中…

每刻和金蝶云星空接口打通对接实战

接通系统&#xff1a;每刻3000中大型企业在用&#xff0c;新一代业财税一体化解决方案提供商。旗下拥有每刻报销、每刻档案、每刻云票、每刻财务共享云平台等&#xff0c;助力企业实现财务数字化转型。对接系统&#xff1a;金蝶云星空金蝶K/3Cloud结合当今先进管理理论和数十万…

算法刷题打卡第72天:最少侧跳次数

最少侧跳次数 难度&#xff1a;中等 给你一个长度为 n 的 3 跑道道路 &#xff0c;它总共包含 n 1 个 点 &#xff0c;编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 &#xff0c;它想要跳到点 n 处。然而道路上可能有一些障碍。 给你一个长度为 n 1 的数组 obstacle…

Cheat Engine7.4 训练教程(非常详细)

目录 一.CE是干什么的&#xff1f; 二.怎么获得&#xff1f; 三.训练教程 步骤 1: 加载进程 步骤 2: 精确值扫描 步骤 3: 未知的初始值 步骤 4: 浮点数 步骤 5: 代码查找 步骤 6: 指针 步骤 7: 代码注入 步骤 8: 多级指针 提示&#xff1a;这篇文章不是一天写完的&a…

设计模式-建造者模式

1.概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦…