工作流设计

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、中间表(多个用户对与信息的审核反映)

 

原文地址:https://www.cnblogs.com/hellowzd/p/5319851.html