背景

  1. 我们可以先只是生成数据库中的表,然后在进行流程定义的部署。
  2. 我们也可以不用先生成数据库中的表,而直接进行流程定义的部署,也会生成表结构,并且会插入流程部署相关的必要的信息。
  3. 流程定义部署后,数据库中的历史相关的表也是没有任何数据记录信息的。需要等到task在动态地流转,然后会相应地生成历史数据记录信息,最后我们才能查询出具体的数据信息。

过程

  • 我们再走一次这个流程

    1. 部署 假如我们的流程已经部署好了。参考与Springboot集成

    2. 实例化

      说明:当把部署后的流程定义进行了实例化(创建流程实例),我们再次分析数据库中的表结构及其变化。
      act_ru_task表



      我们可以分析出,当我们进行了流程实例化后,act_ru_task表会立即插入一条数据。从字段中说明,此表持有act_ru_execution表的引用,持有act_hi_procinst表的引用,持有act_ru_procedef表的引用。这样我们就可以分析表之间的关联关系。

      act_ru_execution表




      我们可以看见,它插入了两条数据。观察到第一条的parent_id是null, 而第二条数据的parent_id是上一条的。由此,我们可以推断出,一个是startEvent,一个是阐述zhangsan这个人需要填写请假申请单。从start_time字段可以看出,这两条数据几乎是同一个时刻插入的。由此可以推测出,当流程实例中的最后一个人审批处理后,也就是同一时刻插入两条数据,一条是自己执行的,一条是endEvent。其他应该是处理一次插入一条记录。

      act_hi_procinst表


      说明:我们可以看见画线的两个id是一样的,因此PROC_INST_ID值来自ID值。其次,就是他只是插入一条数据。表明zhangsan这人的任务已经开始了,但是还没有进行处理。

      act_ru_procdef
      这个表中的内容就是部署流程定义的时候,插入的一条。可以理解为元数据的元数据。因为元数据是bpmn和png,而act_ru_procdef其实就是描述元数据的。因此它为元数据的元数据。

      act_hi_taskinst表



      说明:流程实例初始化后,那么就给记录了一条历史数据。我认为虽然事件确实已经发生了,命名为history相关,但是依然有一些业务对应关系。至少可以找到一件事情的整个发展过程。因此,不要轻视历史记录数据信息。

      act_hi_actinst表


      这张表持有的引用是task_id,刚好来自act_hi_taskinst表中的id。这就是表之间的关联关系。

    3. zhansan处理任务

      数据库表的变化就直接去数据看就行了。核心就看act_hi_procinst表,act_hi_taskinst表,act_hi_actinst表,act_ru_task表(原来的那条删除,新插入下一个任务记录即可)。

      后面的分析过程就完全跟zhangsan处理任务一样的

  • 有了历史数据,这个时候查询历史表中的数据


    控制台打印

    说明,设置查询的参数,比如要查询哪个具体的流程实例,然后根据流程实例ID进行查询。分页,排序,升序,降序都支持这样的操作。

  • 可以继续让wangwu完成任务处理,一样可以查询出关于流程后续的日志记录信息。

小结

  1. 想要测试历史表中数据的查询,需要准备历史数据。准备过程就是:画好流程图,部署流程图,实例化流程图,处理任务即可。
  2. 通过从头到尾都一次,可以分析表之间的关联关系,加深对表结构的一个熟悉程度。
  3. 怎么来理解这些东西呢?想象成一个特殊的ORM工具,我准备业务数据给到Activiti,然后它去存储,我们通过它提供的API进行查询。

Activiti7.0实战学习(九):查询历史表中的数据相关推荐

  1. 《python 数据可视化编程实战》-从excel表中读取数据

    从excel表中读取数据 #!/usr/nim/env python # _*_ coding:utf-8 _*_ import xlrd from numpy import *file1 = 'D: ...

  2. django 数据库mysql学习向数据库表中添加数据

    环境:windows ,已经安装了 mysql, 安装了django 1.新建一个django 项目 2.新建一个子应用 python manage.py startapp moelsinfo 3.在 ...

  3. Activiti7.0实战学习(十一):流程定义的挂起与激活

    背景 要注意,这里说的是流程定义的概念,不是流程实例. 想,如果一个流程定义被挂起了与被激活了,表达了什么含义? 想,为什么流程定义被会挂起,又为什么会被激活? 过程 流程实例可以理解为流程定义这个c ...

  4. 查看表结构以及表中的数据

    查看mysql表结构以及表中的数据 1.查看表结构 mysql> desc student; ±------±-------------±-----±----±--------±------+ ...

  5. mysql循环查询一个表中的数据并进行修改_JavaScript学习笔记(二十四)-- MYSQL基础操作...

    MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...

  6. python学习:向Firebird数据库表中插入数据

    向前一篇文章中创建的T1表中插入数据. # -*- coding: utf-8 -*- """ Created on Tue Jul 10 22:06:43 2018 使 ...

  7. Hive学习笔记(五)向表中装载数据

    1.向管理表中装载数据 再次强调,Hive没有行级别的数据插入.数据更新和删除操作. LOAD DATA LOCAL INPATH '${env:HOME}/california-employees' ...

  8. oracle的删除的row如何,Oracle 删除大表中部分数据

    需求: 项目中有一张表大概有7000多万条数据,造成表空间已满,需要清理部分数据,打算清理3000万. 2B 做法: delete from table_name where ID > '400 ...

  9. mysql杠杆加号什么意思_对tb_book表中的数据,按ID序号进行升序排列,查询语句是什么?_学小易找答案...

    [单选题]修改数据库表结构用以下哪一项 ( ) [单选题]对于一个微小物理量,通常采用将其进行放大的方法实现测量,以下哪个不是物理实验方法? [单选题]扭摆实验中,为了测出金属匀质细杆绕质心对称轴的转 ...

最新文章

  1. POJ1328贪心放雷达
  2. 数据结构-树和二叉树01(定义、度、深度、有序树、森林)
  3. Bootstrap学习之二:栅格化布局
  4. 深入浅出Google Android这本书怎么样
  5. java utf8转iso8859-1_在Java中将UTF-8转换为ISO-8859-1
  6. 基本类型理解巩固及补码原理总结
  7. 电脑自建服务器tomcat,怎么配置搭建tomcat服务器
  8. 基于深度学习生成音乐(mid格式)
  9. Xmind模板文档分享——知识结构(5)
  10. 物联网技术到底是什么技术?
  11. VUE3使用keep-alive页面切换时报错:parentComponent.ctx.deactivate is not a function
  12. 小程序获取用户信息相关 获取头像名称 微信用户
  13. js动态加载table,打印table里的内容以及解决打印后的问题
  14. redis 持久化和恢复
  15. 带劲!厂内全流程智能仓储物流系统
  16. 【烈日炎炎战后端】JAVA基础(3.4万字)
  17. JS实现:哔哩哔哩2020校园招聘技术类笔试卷(二)
  18. 推特由于技术问题,我们无法完成此次请求,请重试
  19. 全球与中国环氧腻子棒市场现状及未来发展趋势
  20. Linux下批处理文件编写

热门文章

  1. android创建平板模拟器,模拟器创建
  2. Canvas-lms 开源在线学习管理系统源码部署(生产版)
  3. 5,736位世界最贫困人士2019年在Tej Kohli角膜研究所获赠视力恢复手术
  4. Vmware 打不开vmx文件
  5. Python画多条线在一个图里
  6. 室内定位:基于NB/LTE Cat.1蜂窝网络的穿戴设备定位 BLE-4
  7. Scratch迷宫之自动生成二 画迷宫
  8. 取消改写模式(python)
  9. LOD(Levels of detail)细节层次3D优化
  10. 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标