一、前言
近期有些同学问起流程的表设计,终于有时间能写下博客,并整理下之前所发布的文章。
之前的文章讲到的表设计,没有给全且还存在漏洞,在这里向各位同学表示歉意。这是我个人最新领悟的一些流程思维,欢迎大家指正。关于流程审批,涉及的操作比较多,本章仅考虑了1/2/3点。
- 审批
- 退回
- 撤回/收回(指发起者中止流程)
- 加签(征求另一人或多人的意见,然后再回到原审批人)
- 转发(转发给他人进行审批)
- 会签(通常用于审批后给相关的人签字确认,以获得工作上的协调。)
- 知会(注意与“会签”的区别,“会签”是要留签字的,知会只是个认指定的人知道有这个流程这么回事,并能查看流程)
- 沟通(与流程相关人员就流程问题进行沟通,类似留言或论坛方式)
二、解决流程业务
这是常见到的两种流程场景过程,此类流程都明确规定了每个流程节点必须指定到某一操作人(不指定操作人不在本讨论范围内)。
1.学生请假流程图
2.学生离校手续申请流程图
两种流程各有一些不同,在“学生请假流程”中,学生可以多次申请,且流程业务的走向由表单的相关数据来决定。而在“学生离校手续申请流程”中,学生只能申请一次,且存在多个部门同时处理业务的过程,而归纳节点(暂且这样称呼)必须等待前置节点完成后方可进行审批。
三、表设计
表名: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=必须所有的审批完成即可 |
关于子流程,本章未做考虑
表名: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.zip