1、前言
近期有些同窗問起流程的表設計,終於有時間能寫下博客,並整理下以前所發佈的文章。
以前的文章講到的表設計,沒有給全且還存在漏洞,在這裏向各位同窗表示歉意。這是我我的最新領悟的一些流程思惟,歡迎你們指正。關於流程審批,涉及的操做比較多,本章僅考慮了1/2/3點。node
- 審批
- 退回
- 撤回/收回(指發起者停止流程)
- 加簽(徵求另外一人或多人的意見,而後再回到原審批人)
- 轉發(轉發給他人進行審批)
- 會籤(一般用於審批後給相關的人簽字確認,以得到工做上的協調。)
- 知會(注意與「會籤」的區別,「會籤」是要留簽字的,知會只是個認指定的人知道有這個流程這麼回事,並能查看流程)
- 溝通(與流程相關人員就流程問題進行溝通,相似留言或論壇方式)
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 |
|
|
|
|
是 |
|
審批時間戳 |
序號 |
列名 |
數據類型 |
長度 |
小數位 |
標識 |
主鍵 |
外鍵 |
容許空 |
默認值 |
說明 |
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代碼 |
序號 |
列名 |
數據類型 |
長度 |
小數位 |
標識 |
主鍵 |
外鍵 |
容許空 |
默認值 |
說明 |
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