前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手把手教你设计一个轻量级的工作流引擎

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

作者头像
Java旅途
发布2021-08-05 15:08:02
9.5K0
发布2021-08-05 15:08:02
举报
文章被收录于专栏: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,如有侵权请联系 cloudcommunity@tencent.com 删除

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

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、数据库表设计
    • 2.1 流程类型表
      • 2.2 流程定义表
        • 2.3 流程节点名称表
          • 2.4 任务定义表
            • 2.5 流程实例表
              • 2.6 任务实例表
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档