一、背景
在本人的快速開發框架里,工作流引擎集成的是Activiti。但是在實際項目使用過程中發現,Activiti還是過于繁重了,對開發人員來說開發工作量大、使用起來難度大。在本人接觸過的軟件項目中,工作流程大都是只有若干個節點的線性流程,于是有了寫一個輕量級工作流引擎的想法,目的是能滿足大部分簡單工作流程的需求,當然了復雜的工作流程還是得用Activiti。本文只是列出了輕量級工作流引擎相關的數據庫表結構。
二、數據庫表設計
表設計原則:流程數據和業務數據相分離,這樣才能保證工作流引擎的通用性。工作流引擎相關表只負責流程的跳轉、走向等。流程中產生的業務表單數據、附件等存儲在開發人員定義的業務表中。流程數據和業務數據之間通過processInstanceId(流程實例ID)和業務數據主鍵相互關聯。
(一)流程類型表
流程類型表
流程類型表作用是區分流程所處的業務類別,如下圖:
(二)流程定義表
流程定義表
流程定義表作用是創建一個工作流程,如下圖:
(三)流程節點名稱表
流程節點名稱表作用是每個業務流程節點的中文名稱,節點名稱可供多個流程節點復用,如下圖:
(四)任務定義表
任務定義表是流程定義表的子表,存了一個工作流程下的所有節點數據,一個節點可以有多個候選人,如下圖:
(五)流程實例表
員工請假是一個審批流程,張三請假則是員工請假流程的一個具體實例。流程實例表存了一個工作流程下的所有流程實例,如下圖:
(六)任務實例表
任務實例表是流程實例表的子表,存了一個流程實例下的每個節點的執行結果,如下圖: