企业审批模块的实现, 大家来讨论
现在项目中要加入审批模块
之前做过类似的模块, 但当时做的是简单版的,现在要做一个更优秀的
1. 审核流程自定义。允许客户自定义审核流程,每个流程由若干个审核阶段组成, 每个审核阶段为组织结构中的某个岗位,或自定义若干人组成,
能够定义同一审核阶段用户之间审核是与的关系还是或的关系,或N人中几人通过就阶段通过。
2. 针对系统的不同业务对象定义其审核流程。根据业务对象的属性生成不同的审批流程,例如为采购订单 采购对象为苹果时的流程, 采购金额>100时的流程, XX岗位申请采购的流程都不同。审核模块应当是独立的,能够提供独立接口为系统中的不同业务对象所用。
设计思路:
1. 定义审核模板表
审核模板表1主表
模板ID 模板名 .............
--------------------------------------------------
1 模板1
...
审核模板表2流程
模板ID 序号 阶段 条件ID 比较符 比较值 下一阶段
--------------------------------
1 1 岗位1 1 > 100 2
1 2 岗位2 3 <= '2008-11-12' 3
1 3 岗位3
审核模板表3条件
条件ID 条件名 条件表达式 描述 所属对象
------------------------------------------------------------
1 基本税 ([Num1]*[Num2]-[Num3])/10 ([金额]*[数量]-[底数])/10 采购定单业务ID
3 到期时间 [CreateTime]+7 [创建时间]+7 采购定单业务ID
审核模板表4触发
岗位 业务 操作 审批模板ID
------------------------------------------------------------
01001 采购定单业务ID 新建操作ID 1
但为种方法似乎只限于 插入记录时审批, 如果是 业务对象 UPDATE 审批,
比如把
ID NAME STATE ID NAME STATE
-------------------------------- 改成 --------------------------------
1 AAA 0 1 BBB 0
ID为主键不能同时存在 1, 两记录相关性如何处理, 是否还要再加一字段 表明记录间的引用关系, 个人觉得对表结构破坏性比较大
2.2 为每个需要实现审批的业务, 添加表结构一样的备份表.
ID NAME ID NAME
------------------------ -----------------------
1 AAA 1 BBB
3 CCC 2 OKOK
右边的表为审批表, 记录1 为把 AAA 改成 BBB, 记录2 为新建OKOK, 当然,右表还可以加个字段标识INSERT/UPDATE
但这样设计也不支持记录删除时的审批, 如果要删除左表记录1 , 我这个审批状态就不太好设
这样设计算是比较理想,但界面上有点小麻烦, 因为我呈现某个业务的网页只有一个, 就是要在取数据源步骤多加个判断查哪个表
2.3 不加任何标识, 所有业务的任何操作,无非就是数据库的增删改查,那我就把某个操作要执行的SQL都收集起来放在数据库中,
等到审批完后,再取出来执行一下.这样,对数据的增删改查都可以支持审批了
想法不错, 但问题还是有的, 当申请人新建或修改某个业务时, 审批人在批的时候, 是要求看到业务对象的,这个方法既然没有真正操作数据库
也就是说, 审批人是看不到待审批的业务对象的,总不能让审批人看SQL语句审批吧. 所有审批申请,只能由申请人来描述,
如 XX人改XX业务 描述 : 我改的属性A=100
光给审批人看描述要求审批好象不太行, 至少让他在网页上看到对象才说得过去
以上三种方法,都不够好, 说了这么多也不知道表达清楚没, 大家有对审批方法有设计经验的, 来交流一下啊
我的QQ : 15279663
[解决办法]
JF