簡單的工作流引擎--數據庫設計及開發


介紹

之前沒怎么接觸過工作流,在網上參考了一些相關的案例。任務着急,並沒有太看透徹就開始coding了。這套工作流引擎並不復雜,主要是應對簡單的流程運轉及權限控制。

我們主要用在售后等工單系統中,一張工單。主要實現了以下功能

1.工作流程的界面設計

2.流程根據設定的路線流轉,設定每個節點的權限,控制流程的編輯及訪問,設定流程中每個用戶對應每個字段的權限

3.流程分支的自動判斷

4.流程的接單及駁回

數據庫結構

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

B開頭的為主表,L為關聯表,R為引用表存儲些類型之類的常量。

主要表及字段說明

主要的流程設計只保存在兩張表中。流程節點表以及路由表。
為了使工作流與業務結合,我們用到了流程實例表,以及活動記錄表。

每開啟一個流程,便創建一條流程實例,每一次流程節點的變動,創建一條活動記錄。

在活動記錄表中,設置了接單人字段belongUser,每條節點的編輯之前需要有接單人。可以在提交上一節點的時候指定下一節點的接單人或者點擊接單來手動接單。這樣設計來避免多人同時編輯同一個節點。

流程圖設計界面

 

設計圖使用的是gooFlow框架,功能比較簡單,但是恰巧適合我這種並不復雜的工作流系統。大家有興趣的可以下載下來玩一下,Demo和Api講解的也比較詳細

 

對於多個分支的情況,有用戶操作的為手動選擇下一流程。

 

無操作界面的話需要需要在路由里寫上相應的條件語句,來判斷接下來要走那一條路由。 以換貨流程為例:

在創建退貨訂單的時候就會自動創建一條退貨的售后工單,同時需要傳入支付方式及換貨單的狀態給工作流。

 

相關代碼 

我將每個工作流封裝為一個dto,里面包括此工作流的所有相關信息,系統啟動時加載到內存中,在修改工作流程時刷新。

工作流上下文

上圖只保存了工作流的內容,關聯到業務的話,還需要一個工作流上下文的類。此類中應該包括工作流當前的狀態等信息,同時提供一些基本的擴展方法。

下圖為工作流上下文類的結構

                                寫下此文一來為了鍛煉一下自己寫博客的能力以及表達能力。同時也希望個位前輩能夠指正紕漏,提出建議!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM