新建公文处理流程:
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