日期:2014-05-17  浏览次数:20718 次

高手请进:关于OA数据库表设计疑问:审批的流程
OA系统,关于审批的流程
现有 记录信息record 审批通过需要"审批团"的概念。
比如审批团A,比方有a1,a2,a3三个成员, 而且3个人审批有顺序,比如先a1,再a2.... , 三个人审批过了,那条记录才审批通过。

请问高手 如何设计数据库比较好。

现在 记录record表 字段假使如下。
idx, 记录名称,审批团Id_Fx,审批团审批状态



------解决方案--------------------
idx, 记录名称,审批成员,审批顺序 审批状态

审批通过 表示所有审批成员的状态都是通过标志
------解决方案--------------------
这是关地工作流问题,工作的流向由状态决定,只有上一流程完成了,工作才会流入下一环节(下一部门)
你只要控制好状态就行了,比如:
1 状态为员工输入
2 状态为主管审批
3 状态为经理审批
------解决方案--------------------
其实这里还是比较简单的处理就可以了
你的担心无非是不知道你当前的状态该在系统中如何实现 并且如何传递到下一级这里 推荐你最简单的方法只要在该表中添加3个字段就可以
1、审批成员
2、当前审批级数
3、下一级审批人
这3个字段参数添加到表中就可以很简单实现这样一个流的问题了

下面说下这3个字段如何使用
首先提交这个审批流程后把所有的审批人都写到这个审批成员字段中可以用分割符分割需要程序去判断分割符
例如:“审批1
------解决方案--------------------
审批2
------解决方案--------------------
审批3
------解决方案--------------------
审批4
------解决方案--------------------
审批5”这里我都用 “
------解决方案--------------------
”符号分割
这是应该由第1级审批1 来审批 那么当你提交这个审批流的时候 把审批1 写到你下一级审批人中
并且当前审批级次为1
当第1个人审批完毕后 传递给下个节点时  按照当前审批级次 把审批成员按分割符转换成数组 将当前审批级次+1 得到数组中的审批2 那么这时候更新下一级审批人为审批2  以此类推
这是简单的单表审批信息
当然有些审批流也有用多表来做 看各人爱好 这个程序执行效率就看你如何取舍 一个执行效率在程序 一个执行效率可能在数据库
看你不同的需求有不同的设计方法
------解决方案--------------------
个人意见,
主表:
id,记录名称,审批顺序,审批人id,审批团id,审批人审批状态,(团状态看你个人意愿设定)

次表:
审批团id,审批人id,审批团顺序id,

次表用来方便逻辑设定审批顺序,看审批过程都查主表。 
万一审批过程中出现审批团人员变动,根据业务需求对未审批结束的单子内的该人员做灰化或者添加等处理。