前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单的工作流引擎--数据库设计及开发

简单的工作流引擎--数据库设计及开发

作者头像
蓝夏
发布2022-05-10 19:22:57
1.6K0
发布2022-05-10 19:22:57
举报
文章被收录于专栏:bluesummer

介绍

之前没怎么接触过工作流,在网上参考了一些相关的案例。任务着急,并没有太看透彻就开始coding了。这套工作流引擎并不复杂,主要是应对简单的流程运转及权限控制。

我们主要用在售后等工单系统中,一张工单。主要实现了以下功能

1.工作流程的界面设计

2.流程根据设定的路线流转,设定每个节点的权限,控制流程的编辑及访问,设定流程中每个用户对应每个字段的权限

3.流程分支的自动判断

4.流程的接单及驳回

数据库结构

这是工作流引擎中涉及到的所有表了。

B开头的为主表,L为关联表,R为引用表存储些类型之类的常量。

主要表及字段说明

主要的流程设计只保存在两张表中。流程节点表以及路由表。 为了使工作流与业务结合,我们用到了流程实例表,以及活动记录表。

每开启一个流程,便创建一条流程实例,每一次流程节点的变动,创建一条活动记录。

在活动记录表中,设置了接单人字段belongUser,每条节点的编辑之前需要有接单人。可以在提交上一节点的时候指定下一节点的接单人或者点击接单来手动接单。这样设计来避免多人同时编辑同一个节点。

流程图设计界面

设计图使用的是gooFlow框架,功能比较简单,但是恰巧适合我这种并不复杂的工作流系统。大家有兴趣的可以下载下来玩一下,Demo和Api讲解的也比较详细

对于多个分支的情况,有用户操作的为手动选择下一流程。

无操作界面的话需要需要在路由里写上相应的条件语句,来判断接下来要走那一条路由。 以换货流程为例:

在创建退货订单的时候就会自动创建一条退货的售后工单,同时需要传入支付方式及换货单的状态给工作流。

相关代码 

我将每个工作流封装为一个dto,里面包括此工作流的所有相关信息,系统启动时加载到内存中,在修改工作流程时刷新。

工作流上下文

上图只保存了工作流的内容,关联到业务的话,还需要一个工作流上下文的类。此类中应该包括工作流当前的状态等信息,同时提供一些基本的扩展方法。

下图为工作流上下文类的结构

写下此文一来为了锻炼一下自己写博客的能力以及表达能力。同时也希望个位前辈能够指正纰漏,提出建议!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 数据库结构
  • 主要表及字段说明
  • 流程图设计界面
  • 相关代码 
    • 工作流上下文
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档