做公文流转的具体思路

新建公文处理流程:  
  1、 建新流程,首先指定流程步骤,未正式启用的流程可以修改步骤。  
  2、 指定每个流程步骤的处理方法:会签或签署(会签指的是由多个人同时分别审批,签署则是按顺序审批后由流程的下一签署人审批)  
  3、 指定每个步骤的签署人(一个或多个人)  
  4、 将流程保存在流程数据库中。数据库结构如下:  
  流程库  
  字段名称 类型 key 说明  
  PROC_ID VARCHAR(6) Primary   key 流程编号  
  PROC_NAME Varchar   (255) 流程名称  
  ISVALID CHAR(1) 生效标志:  
  0:未生效  
  1:已生效  
   
  流程步骤库  
  PROC_ID VARCHAR   (6) Primary   key 流程编号  
  STEP_ID VARCHAR   (6) 步骤编号  
  USRID VARCHAR   (6) 签署人用户号  
  FLAG CHAR(1) 签署标志  
  :0--签署  
  :1—会签    
  举例:  
  流程表  
  流程编号 流程名称  
  000001 A流程  
  000002 B流程  
  000003 C流程  
  流程步骤表  
  流程编号 步骤编号 用户编号 (说明)  
  000001 1 000003 用户编号可以是真正的“用户编号”(来自USERS),也可以是“职务编号(来自TASK)”,视编程时如何处理而定,  
  1、如果按用户编号处理,编程时少一道处理过程,但设置步骤不灵活,一旦人员调动,流程则需重新设置;  
  2、按职务编号处理,无论人员如何变动,流程不需重新设置,只是在编程时,需按职务将工作分配给签署人  
  3、一般说来,一个流程中,同一个用户不可能签署两次。  
  5、 如果时间允许,建议按职务编号处理。  
  6、 职务设置在系统设置中已作好。  
  000001 2 000004  
  000001 2 000002  
  000001 2 000009  
  000001 3 000008  
  000001 4 000001  
  000002 1 000001  
  000002 1 000100  
  000002 2 002102  
  000002 2 000009  
  000002 3 000002  
  000003 1 000005  
  000003 2 000008  
  5、确定流程是否生效(生效后的流程不能修改)  
  公文流程步骤  
  1、 新建一个公文(拟文)  
  2、 输入公文必要的信息(3、 选择合适的流程  
  4、 保存公文  
  5、 按照流程所涉及的步骤及用户(如果按职务处理,则需要转换为用户编号),生成公文审批表,如下表所示  
  公文审批过程表  
  字段名称 类型 key 说明  
  ID Varchar     (12) Primary   key 流水号  
  DOCUMENT_ID VARCHAR(6) 公文号  
  PROC_ID VARCHAR   (6) 审批流程号  
  STEP_ID VARCHAR   (6) 步骤号  
  USER_ID VARCHAR   (6) 用户编号  
  OPINION Varchar   (255) 签署意见  
  OPINFLAG CHAR(1) 意见  
  0:不同意  
  1:同意  
  2:需进一步研究  
  FLAG CHAR(1) 签署标志  
  0:未开始  
  1:进入审批流程  
  2:审批完成  
  PROCFLAG CHAR(1) 流程进展标志  
  0:审批完成  
  1:否定  
  2:发回重审  
   
  6、 拟文完成后,用“进入审批流程”处理,将流程中序号为1的流程标志设为“正在审批”状态。每个流程步骤完成后,自动将下一审批过程(其公文号、审批流程号、审批步骤号完全相同,而且流程进展标志不为2)的FLAG设为1,进入审批流程。如果没有下一流程,将流程进展标志设置为 0,表示审批完成,然后发回VARCHAR   (6)拟稿人或办公室,按审批意见决定是否发文。  
  7、 如果决定发回重审,则将原审批过程表中的流程进展标志设为2,然后在审批过程表中重新建一个审批过程,重新审批。  
  8、 当审批过程的签署标志为1(进入审批流程)时,在用户提醒栏中显示用户有文件要签署。(在用户登录时显示提醒栏)


当用户审批后的状态要用触发器实现  
  具体的代码如下:  
  CREATE   TRIGGER   tr_complete_proc   ON   [dbo].[proc_audit]    
  FOR     UPDATE    
  as  
  declare   @all_proc   int,@completed_proc   int,@del_proc_id   varchar(6),@del_document_id   varchar(6)  
  if   update(flag)  
  begin  
          select   @del_proc_id=proc_id,@del_document_id=document_id   from   deleted  
          select   @all_proc=count(*)    
          from   proc_audit  
          where   proc_id=@del_proc_id   and   document_id=@del_document_id  
          select   @completed_proc=count(*)  
          from   proc_audit  
          where   proc_id=@del_proc_id   and   document_id=@del_document_id   and   flag=2  
          if   @all_proc=@completed_proc  
                  update   proc_audit  
                  set   procflag=0  
                  where   proc_id=@del_proc_id   and   document_id=@del_document_id  
  end  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值