如何设计一个轻量级工作流引擎

一、背景

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

二、数据库表设计

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

(一)流程类型表
流程类型表

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


(二)流程定义表
流程定义表

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


(三)流程节点名称表

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


(四)任务定义表

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



(五)流程实例表

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


(六)任务实例表

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


你可能感兴趣的:(如何设计一个轻量级工作流引擎)