一、请假申请流程图回顾

前面我们设计了请流程审批的流程图,并且完成了流程图任务分配等功能,

上述的流程图具有四个任务节点

1、填写请假申请

2、经理审批

3、总监审批

4、人力资源审批

二、Activiti表设计原则:流程数据和业务数据相分离

这四个任务,分别配置了四个form表单。但是Activiti没有提供存储存放业务表单数据的表。

Activiti相关表只负责流程的跳转、走向等。流程中产生的业务表单数据、审批意见、附件等存储在开发人员定义的业务表中。

流程数据和业务数据之间通过processInstanceId(流程实例ID)和业务数据主键相互关联。

为什么不使用Activiti相关表来存储表单数据和附件?

查看act_hi_detail 表会发现,Activiti采用了纵表的方式存储表单数据,假设一条请假申请表单数据有很多个字段,那就需要相应调记录存储原本横表只需要一条记录存储的数据同时采用纵表的方式会有如下问题:

1、会有大量的冗余数据并且数据量会急剧的增长

2、查询语句复杂,查询效率低

3、不适合做后期的统计报表分析

4、Activiti存储附件使用Blob数据格式,文件存储在数据库里,数据库的数据文件会变得超大,不利于数据库备份和迁移。

三、请假申请流程 业务表设计

针对这些情况,通常会单独建立对应的请假流程申请表,存储表单数据。

请假申请表

字段 类型 是否空 备注
id varchar(64) not null 主键
process_instance_id varchar(64) not null 流程实例id
user_id varchar(64) not null 申请人用户id
reason varchar(200) not null 请假申请原因
time int not null 请假天数
name varchar(64) not null 申请人姓名
process_status varchar(64) not null 流程状态(0:申请中;1:审批中;2:审批通过;3:审批不通过)
submitTime data not null 提交日期
createTime data not null 创建日期
updateTime data not null 修改日期

请假申请审批表

字段 类型 是否空 备注
id varchar(64) not null 主键
process_instance_id varchar(64) not null 流程实例id
task_id varchar(64) not null Activti任务id
user_id varchar(64) not null 审批人用户id
result varchar(64) not null 审批结果(0:不通过;1:通过)
remark varchar(200) not null 备注
name varchar(64) not null 审批人姓名
createTime data not null 创建日期
updateTime data not null 修改日期

Activiti6自学之路(九)——请假申请和请假审批数据库表设计相关推荐

  1. Activiti6自学之路(十)——编码实现请假审批流程(完整过程)

    前面章节我们已经了解了Activiti6的用法和功能,做了与springboot的整合工作, 根据我们前面创建了流程图,现在我们通过实际编码来实现整个过程! 以下是请假审批流程图 一.启动spring ...

  2. Activiti6自学之路(七)——个人任务和组任务

    Activiti6 任务有个人任务和组任务之分,理解两者的区别并且知道如何操作对应的任务是学习activiti重要一步. 本章承接上文章节,这里就不详细描述了 一.个人任务与组任务区别 个人任务:流程 ...

  3. Activiti6自学之路(六)——Activiti中用户与用户组

    Activiti中内置了一套用户.用户组关系,以及对它们的操作API.关于用户和用户组表工业四张,如下图 一.用户与用户组表的介绍 1.ACT_ID_USER(用户信息表) 2.ACT_ID_INFO ...

  4. Activiti6自学之路(八)——查看流程图

    前面章节我们已经设计了流程图和执行了流程图任务.比如张三填写了请假申请后,如果想要知道现在流程已经到哪里了,处理进度怎么样,哪怎么实现了.Activiti提供了查看流程图功能,可以看到指定流程进度 / ...

  5. Activiti6自学之路(五)—— 部署流程资源的四种方式及数据库表更新情况

    创建了流程图资源后, 一般我们需要对创建的资源如(leave.bpmn.leave.png)进行部署,部署方式我这里列出四种方式,前三种为单个流程资源的部署,第四种方式可以同时部署多个流程资源. 一. ...

  6. OA系统十九:请假申请五:【请假申请】这个内嵌页面的前台文件;设置【点击左侧菜单栏的“请假申请”后】在首页的“功能区”显示【请假功能】这个内嵌页面;

    本篇博客的主要内容是: 本篇博客有几点特别说明下: (1)前端的东西挺复杂的,感受到了[学会一个成熟的前端框架]的重要性.毕竟,框架可以提高前段文件的开发效率,简化开发步骤! (2)前端的Ajax请求 ...

  7. OA系统十五:请假申请一:【请假申请】这个内嵌界面的数据库设计;(即请假申请这个线型工作流程的数据库设计!)

    本篇博客的主要内容是:设计[请假申请]相关的数据表: 目录 一:[多级请假审批流程]的数据库设计:分析 1.请假工作流程图 2.工作流程表的设计分析 3.设计约束 二:具体表设计 1.leaveFor ...

  8. 零基础 Java 自学之路(2021年最新版)

    前言 无论你是否想自学 Java,认真看完本文,你以后的职场生涯至少少走1年弯路. 本文会持续更新,建议收藏. 初衷 在 CSDN 上经常有同学私聊我询问 "如何自学 Java". ...

  9. 一个「学渣」从零Web前端自学之路

    从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的"丰富". 最后的机缘巧合下,走上了前端开发之路,作为 ...

最新文章

  1. CSP 201812-2 小明放学 Python实现+详解
  2. 蚂蚁金服大佬自述:保持学习力,永远胜过不切实际的一夜暴富幻想!
  3. 在pcDuino上使用蓝牙耳机玩转音乐
  4. Android Studio之gradle的配置与介绍
  5. JDK12下的ArrayList源码解读 与 Vector的对比
  6. head()函数python_Python中的Pandas DataFrame head()方法
  7. python函数的作用域_python学习第五篇 函数 变量作用域
  8. java 文件树形_java 显示树形文件结构,类似windows的tree命令
  9. CentOS7 搭建Ambari-Server,安装Hadoop集群(一)
  10. Oracle宣布在云上正式上线 自治事务处理数据库
  11. JAVA“类”数组的创建与调用
  12. Android真机调试时LogCat不显示日志信息
  13. linux安装gcc命令6,linux安装gcc命令
  14. Jflash 工程配置及下载
  15. vue视频播放——vue-video-player
  16. 服务器监控系统应有哪些功能,公安视频监控系统需要具备哪些功能
  17. 服务器linux攻击方法,Linux操作系统中实现DDOS攻击的方法
  18. julia常用矩阵函数_Julia 多维数组
  19. php木马伪装成图片,木马伪装图片运行的技巧
  20. 多因子模型 —— 因子正交化处理

热门文章

  1. Kodi Aeon MQ8 皮肤通过修改配置文件解决设置中文时乱码
  2. java 混音_混音方法的汇总
  3. Docker启动nginx容器--搭建网站
  4. 奇迹服务器该如何选择?
  5. Dom选择器及其常用事件
  6. chrome修改头部
  7. Python_0b、0o、0x进制转换/原码、反码、补码
  8. 推荐8个让我分享欲大增的实用软件和网站,解决痛点需求
  9. tomcatservlet入门
  10. 如何删除gitlab上默认受保护的master主分支