1、首先,获得当前用户的id
2、有一个流程表,这个流程表里就两个字段,一个是父id,一个是子id,多对多的关系
3、信息表扩展了两个字段,一个是关于哪个用户审核的,一个是审核状态
4、根据当前用户的id(也是流程表里的子id)查询父id
5、父id与信息表里的id(审核人id)比较,如果id是一致的且审核状态是审核通过,说明流程轮到我来审核了,否则信息不显示
--------------------------------------------------------------------------------------------------------------------------------------------------------
流程表--由3并行,由5、7结束
父id 子id
1 2
2 3
3 4
4 5
从3并行
3 6
6 7
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
6、如果是并行流程的话,信息表需要扩展四个字段,一个是关于哪两个用户审核的,一个是审核状态
哪如果是同时并行了多个流程呢?所以动态添加信息表的字段并不科学。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
中间表
内容id 当前审核者 审核结果
1 5 通过
1 7 不通过
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
内容 内容id
sdfsdfsdf 1
-------------------------------------------------------------------------------------------------------------------------------------------------------
1、获取当前用户id
2、根据用户id获取父id
3、获取信息id
4、根据信息id获取中间表,判断流程是否终结
5、如果流程没有终结,根据父id获取中间表id,判断其父级是否通过审核,如果通过,则显示信息
当然,直接获取信息id是不友好的
$list = select * from 中间表 where 父id = 当前用户的父id and 状态 = '审核通过'
foreach ($list as $key=>$value){
echo "我的代办事项".$value;
}
取到所有(代办事项)信息id
二次开发必须满足的条件
1、信息表
2、流程表
3、中间表(多个用户对与信息的审核反映)