公文流转数据库建立
?
新建公文處理流程:
1、 建新流程,首先指定流程步驟,未正式啟用的流程可以修改步驟。
2、 指定每個流程步驟的處理方法:會簽或簽署(會簽指的是由多個人同時分別審批,簽署則是按順序審批后由流程的下一簽署人審批)
3、 指定每個步驟的簽署人(一個或多個人)
4、 將流程保存在流程數(shù)據(jù)庫中。數(shù)據(jù)庫結構如下:
流程庫
字段名稱 類型 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、如果按用戶編號處理,編程時少一道處理過程,但設置步驟不靈活,一旦人員調(diào)動,流程則需重新設置;
2、按職務編號處理,無論人員如何變動,流程不需重新設置,只是在編程時,需按職務將工作分配給簽署人
3、一般說來,一個流程中,同一個用戶不可能簽署兩次。
5、 如果時間允許,建議按職務編號處理。
6、 職務設置在系統(tǒng)設置中已作好。
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:發(fā)回重審
6、 擬文完成后,用“進入審批流程”處理,將流程中序號為1的流程標志設為“正在審批”狀態(tài)。每個流程步驟完成后,自動將下一審批過程(其公文號、審批流程號、審批步驟號完全相同,而且流程進展標志不為2)的FLAG設為1,進入審批流程。如果沒有下一流程,將流程進展標志設置為 0,表示審批完成,然后發(fā)回VARCHAR (6)擬稿人或辦公室,按審批意見決定是否發(fā)文。
7、 如果決定發(fā)回重審,則將原審批過程表中的流程進展標志設為2,然后在審批過程表中重新建一個審批過程,重新審批。
8、 當審批過程的簽署標志為1(進入審批流程)時,在用戶提醒欄中顯示用戶有文件要簽署。(在用戶登錄時顯示提醒欄)
當用戶審批后的狀態(tài)要用觸發(fā)器實現(xiàn)
具體的代碼如下:
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
總結
- 上一篇: 病案分析题女性,35岁,因为&q
- 下一篇: 【C++】C++0x :: Introd