首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >手把手教你设计一个轻量级的工作流引擎

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

作者头像
Java旅途
发布2021-08-05 15:08:02
发布2021-08-05 15:08:02
10.7K0
举报
文章被收录于专栏:Java旅途Java旅途

一、背景

在本人的快速开发框架里,工作流引擎集成的是Activiti。但是在实际项目使用过程中发现,Activiti还是过于繁重了,对开发人员来说开发工作量大、使用起来难度大。在本人接触过的软件项目中,工作流程大都是只有若干个节点的线性流程,于是有了写一个轻量级工作流引擎的想法,目的是能满足大部分简单工作流程的需求,当然了复杂的工作流程还是得用Activiti。本文只是列出了轻量级工作流引擎相关的数据库表结构。

二、数据库表设计

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

2.1 流程类型表

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

2.2 流程定义表

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

2.3 流程节点名称表

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

2.4 任务定义表

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

2.5 流程实例表

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

2.6 任务实例表

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

来源:jianshu.com/p/fbd4b6d1fbcf

< END >

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-04,如有侵权请联系 [email protected] 删除

本文分享自 Java旅途 微信公众号,前往查看

如有侵权,请联系 [email protected] 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、数据库表设计
    • 2.1 流程类型表
    • 2.2 流程定义表
    • 2.3 流程节点名称表
    • 2.4 任务定义表
    • 2.5 流程实例表
    • 2.6 任务实例表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档