Java知网

  • 首页
  • Spring Boot
  • 面试精选
  • 程序人生
  • 资源
  • 友链
  • 关于我
  1. 首页
  2. Java
  3. 正文

手把手教你设计一个轻量级的工作流引擎

2021年8月3日 637点热度 2人点赞 0条评论

一、背景

在本人的快速开发框架里,工作流引擎集成的是Activiti。但是在实际项目使用过程中发现,Activiti还是过于繁重了,对开发人员来说开发工作量大、使用起来难度大。

在本人接触过的软件项目中,工作流程大都是只有若干个节点的线性流程,于是有了写一个轻量级工作流引擎的想法,目的是能满足大部分简单工作流程的需求,当然了复杂的工作流程还是得用Activiti。本文只是列出了轻量级工作流引擎相关的数据库表结构。

二、数据库表设计

表设计原则:流程数据和业务数据相分离,这样才能保证工作流引擎的通用性。工作流引擎相关表只负责流程的跳转、走向等。流程中产生的业务表单数据、附件等存储在开发人员定义的业务表中。流程数据和业务数据之间通过processInstanceId(流程实例ID)和业务数据主键相互关联。

2.1 流程类型表

流程类型表作用是区分流程所处的业务类别,如下图:

2.2 流程定义表

流程定义表作用是创建一个工作流程,如下图:

2.3 流程节点名称表

流程节点名称表作用是每个业务流程节点的中文名称,节点名称可供多个流程节点复用,如下图:

2.4 任务定义表

任务定义表是流程定义表的子表,存了一个工作流程下的所有节点数据,一个节点可以有多个候选人,如下图:

2.5 流程实例表

员工请假是一个审批流程,张三请假则是员工请假流程的一个具体实例。流程实例表存了一个工作流程下的所有流程实例,如下图:

2.6 任务实例表

任务实例表是流程实例表的子表,存了一个流程实例下的每个节点的执行结果,如下图:

作者:jessehua
来源:https://www.jianshu.com/p/fbd4b6d1fbcf

相关文章:

  1. 你管这破玩意叫Pulsar
  2. 分布式锁的原理,redis和zookeeper如何实现分布式锁!
标签: 暂无
最后更新:2021年9月4日

javatip

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

取消回复
搜一搜
扫一扫
    关注公众号
  • 技术干货推送
  • 免费资料领取
  • 定时福利发放
分类
  • Java / 110篇
  • Mysql / 17篇
  • Redis / 10篇
  • Spring Boot / 29篇
  • Spring Cloud / 16篇
  • 消息队列 / 14篇
  • 程序人生 / 21篇
  • 资源 / 3篇
  • 面试 / 23篇
归档
  • 2022年4月 / 1篇
  • 2022年1月 / 1篇
  • 2021年12月 / 9篇
  • 2021年11月 / 2篇
  • 2021年9月 / 10篇
  • 2021年8月 / 4篇
  • 2021年7月 / 2篇
  • 2021年6月 / 10篇
  • 2021年5月 / 18篇
  • 2021年4月 / 75篇
  • 2021年3月 / 78篇

COPYRIGHT © 2021 javatip.cn. ALL RIGHTS RESERVED.

陇ICP备19004310号-2

甘公网安备 62010202003150号