博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
公文流转数据库建立
阅读量:5985 次
发布时间:2019-06-20

本文共 2323 字,大约阅读时间需要 7 分钟。

 

新建公文处理流程:

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

转载于:https://www.cnblogs.com/m-cnblogs/archive/2012/06/17/2552941.html

你可能感兴趣的文章
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>
Atom 编辑器系列视频课程
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>
通过IP判断登录地址
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>