關於OA流程相關數據表的設計

1、前言

近期有些同窗問起流程的表設計,終於有時間能寫下博客,並整理下以前所發佈的文章。
以前的文章講到的表設計,沒有給全且還存在漏洞,在這裏向各位同窗表示歉意。這是我我的最新領悟的一些流程思惟,歡迎你們指正。關於流程審批,涉及的操做比較多,本章僅考慮了1/2/3點。node

  1. 審批
  2. 退回
  3. 撤回/收回(指發起者停止流程)
  4. 加簽(徵求另外一人或多人的意見,而後再回到原審批人)
  5. 轉發(轉發給他人進行審批)
  6. 會籤(一般用於審批後給相關的人簽字確認,以得到工做上的協調。)
  7. 知會(注意與「會籤」的區別,「會籤」是要留簽字的,知會只是個認指定的人知道有這個流程這麼回事,並能查看流程)
  8. 溝通(與流程相關人員就流程問題進行溝通,相似留言或論壇方式)

2、解決流程業務

這是常見到的兩種流程場景過程,此類流程都明確規定了每一個流程節點必須指定到某一操做人(不指定操做人不在本討論範圍內)。
1.學生請假流程圖
2.學生離校手續申請流程圖數據庫

學生請假申請流程圖
學生離校申請流程圖

兩種流程各有一些不一樣,在「學生請假流程」中,學生能夠屢次申請,且流程業務的走向由表單的相關數據來決定。而在「學生離校手續申請流程」中,學生只能申請一次,且存在多個部門同時處理業務的過程,而概括節點(暫且這樣稱呼)必須等待前置節點完成後方可進行審批。線程

3、表設計

表名:v1_flow(流程表)
序號 列名 數據類型 長度 小數位 標識 主鍵 外鍵 容許空 默認值 說明
1 id int 11 auto_increment
2 name varchar 255 流程名稱
3 form_id int 11 表單設計編號
4 process_id int 11 流程設計編號
5 limit_times int 11 -1 一個用戶能夠發起多少次,-1=不限制
6 is_lock tinyint 4 是否鎖定
表名:v1_flow_activity(流程活動表)
序號 列名 數據類型 長度 小數位 標識 主鍵 外鍵 容許空 默認值 說明
1 id int 11 auto_increment
2 sponsor int 11 活動發起者
3 title varchar 255 標題
4 status varchar 255 狀態,0=僅保存,1=運行中,2=已停止,9=已結束
5 join_time bigint 15 加入時間戳
6 flow_id int 11 當前運行的流程編號,對應v1_flow表的id
7 cur_process_id int 11 當前運行的流程設計編號
8 cur_form_id int 11 當前運行的表單設計編號

cur_process_id和cur_form_id設計的目的:有些流程在流程活動運行過程當中,更改了表單設計編號或流程設計編號。爲讓流程能繼續往下運行而設計。設計

表名:v1_flow_activity_process(流程活動運行表)
序號 列名 數據類型 長度 小數位 標識 主鍵 外鍵 容許空 默認值 說明
1 id int 11 auto_increment
2 activity_id int 11 流程活動編號,對應v1_flow_activity表的id
3 run_node_id int 11 當前運行的節點編號,對應v1_flow_node表的id
4 arrive_time bigint 15 信息到達時間戳
5 accept_user_id int 11 0 接收用戶編號
6 accept_status tinyint 4 0 接收信息狀態,1=已接收,0=還沒有接收
7 accept_time bigint 15 接收時間戳
8 done_user_id int 11 0 審批人編號(審批人不必定是接收的用戶)
9 done_status tinyint 4 0 審批狀態,1=已審批,0=爲還沒有審批
10 done_time bigint 15 審批時間戳
表名:v1_flow_form(表單設計表)
序號 列名 數據類型 長度 小數位 標識 主鍵 外鍵 容許空 默認值 說明
1 id int 11 auto_increment
2 name varchar 255 表單設計名稱
3 data_table varchar 255 數據表表名
4 title_scheme varchar 255 流程活動的標題構成方式,如:#{student_no}#{user_name}請假申請
5 layout varchar 1000 表單設計HTML代碼
表名:v1_flow_form_element(表單元素表)
序號 列名 數據類型 長度 小數位 標識 主鍵 外鍵 容許空 默認值 說明
1 id int 11 auto_increment
2 form_id int 11 所屬表單設計編號
3 type varchar 255 表單類型,text/select/radio/checkbox/button等
4 label varchar 255 標記名稱
5 name varchar 255 表單元素名稱
6 data_source varchar 500 數據源,select/radio/checkbox會存在
7 data_type varchar 50 數據類型,int/varchar等
8 data_length int 11 數據長度
9 default_value varchar 255 默認值
10 placeholder varchar 255
11 styles varchar 255 樣式
12 attributes varchar 255 屬性
13 is_hidden tinyint 4 是否隱藏
表名:v1_flow_process(流程設計表)
序號 列名 數據類型 長度 小數位 標識 主鍵 外鍵 容許空 默認值 說明
1 id int 11 auto_increment
2 name varchar 255 流程設計名稱
表名:v1_flow_node(流程節點表)
序號 列名 數據類型 長度 小數位 標識 主鍵 外鍵 容許空 默認值 說明
1 id int 11 auto_increment
2 process_id int 11 所屬流程設計編號,對應v1_flow_process表的id
3 node_name varchar 50 節點名稱
4 node_type varchar 255 節點類型,1=開始節點,2=收納節點,3=子流程節點,9=結束節點
5 write_forms varchar 200 可寫字段集合
6 operator int 11 指定的審批人用戶id,可留空
7 operator_type tinyint 4 審批人類型,此項可自行設計,如-1=自行選擇,1=發起者的班主任,2=發起者所在部門的二級學院學生科科長,3=發起者所在部門的二級學院領導等
8 allow_back tinyint 4 是否容許回退操做
9 back_step tinyint 4 1 回退操做步長,1=一步,2=兩步
10 styles varchar 500 節點樣式,長寬高top/left等
11 actions varchar 200 節點審批後的回調方法(鉤子),須要程序具體實現
12 condition_prev tinyint 4 2 全部前置節點(可能存在多個前置節點)能運行到當前節點的方案,1=只要有一個審批完成便可,2=必須全部的審批完成便可

關於子流程,本章未作考慮orm

表名:v1_flow_process_procedure(流程設計步驟/線程表--即節點之間的線走勢)
序號 列名 數據類型 長度 小數位 標識 主鍵 外鍵 容許空 默認值 說明
1 id int 11 auto_increment
2 cur_node_id int 11 當前節點id,對應v1_flow_node表的id
3 next_node_id int 11 下一節點id,對應v1_flow_node表的id
4 limit_hour int 255 -1 節點之間限制多少小時內必須審批,-1=不限制
5 condition_next_data varchar 1000 能往下一節點運行的數據條件,如請假中流程可設置#{days}>=3
表名:v1_flow_data1(流程編號爲1的數據表-請假表)
序號 列名 數據類型 長度 小數位 標識 主鍵 外鍵 容許空 默認值 說明
1 id int 11 auto_increment
2 dept_name varchar 50 學生所在二級學院
3 major_name varchar 50 學生專業
4 classes_name varchar 50 學生行政班級
5 user_id int 11 用戶id
6 student_no varchar 50 學號
7 user_name varchar 50 姓名
8 sq_timeBegin bigint 15 請假開始時間戳
9 sq_timeEnd bigint 15 請假截至時間戳
10 sq_days int 11 請假天數
11 sq_reason varchar 200 請假事由
12 banzhuren varchar 100 班主任姓名
13 banzhuren_shenpi varchar 25 班主任審批結果
14 banzhuren_shenpi_text varchar 255 班主任審批意見
15 xsk2 varchar 255 二級學院學生審批審批人姓名
16 xsk2_shenpi varchar 255 二級學院學生審批結果
17 xsk2_shenpi_text varchar 255 二級學院學生審批意見
18 lingdao2 varchar 255 二級學院領導姓名
19 lingdao2_shenpi varchar 255 二級學院領導審批結果
20 lingdao2_text varchar 255 二級學院領導審批意見
21 xsk varchar 255 學校學生科審批人姓名
22 xsk_shenpi varchar 255 學校學生科審批結果
23 xsk_shenpi_text varchar 255 學校學生科審批意見
24 xjr varchar 255 銷假人姓名
25 xj_days varchar 255 銷假天數
26 xj_time datetime 銷假時間
27 xjshr varchar 255 銷假審覈人姓名
28 xjshr_shenhe varchar 255 銷假審覈結果
29 xjshr_shenhe_text varchar 255 銷假審覈意見

數據庫表結構和簡單數據
https://files.cnblogs.com/files/kingeric/zmoa.zipblog

相關文章
相關標籤/搜索