?

基于B/S模式的公文流轉系統互斥訪問控制策略研究

2010-04-11 08:07吳潔明莫智懿
制造業自動化 2010年13期
關鍵詞:字段頁面定義

萬 勵,吳潔明,莫智懿

WAN Li, WU Jie-ming, MO Zhi-yi

(梧州學院 計算機科學系,梧州 543002)

基于B/S模式的公文流轉系統互斥訪問控制策略研究

Research on mutual exclusion access control in document transmission system based on B/S model

萬 勵,吳潔明,莫智懿

WAN Li, WU Jie-ming, MO Zhi-yi

(梧州學院 計算機科學系,梧州 543002)

針對B/S模式的公文流轉系統中多人同時處理公文時經常出現數據不一致性以及死鎖的問題,通過對B/S模式中的application對象和session對象的相關特性深入研究,結合鎖的控制機制,找出了解決問題的方法,不僅實現了公文互斥訪問,而且在實現過程中無需額外訪問和修改數據庫,使得訪問過程不出現死鎖,對服務器訪問代價也較小,因而在大型辦公自動化系統中有現實意義。

互斥訪問;公文流轉;B/S;application;session

0 引言

公文流轉[1]作為辦公自動化系統的重要組成部分,涉及到多個部門、多個用戶的協同處理,常出現多人同時處理同一公文。如果對公文不進行互斥訪問,則容易出現以下問題[2]:1)當某一用戶選中的公文正在更新時,其他用戶也可能要讀取該公文,此時讀取的是臟數據;2)當有兩個或兩個以上的用戶選中同一個公文,并基于最初選定的值更新時,由于用戶間不知道其他用戶的存在,最后的更新將重寫由其他用戶所做的更新,將發生丟失更新問題。在B/S模式的公文處理系統中,由于用戶處于網絡環境中,網絡的不穩定性也容易造成死鎖等問題。

1 常規數據庫字段解決辦法

在處理多用戶訪問公文的互斥問題中,常規的數據庫字段解決方法是在公文數據表中增加一個bit型的字段,作為該公文是否正在被處理的標志。當該公文沒有被任何人訪問的時候字段的值為0。當有人要訪問的時候,先查詢出該字段的值,如果為0則更新為1,進入公文處理頁面;如果該字段為1則表示某用戶正在處理該公文,當前用戶不能進入。當進入的用戶處理完公文退出時就將該字段設置為0,這樣實現了對公文的互斥訪問。但是,這個過程中如果出現意外,字段解決方法將帶來嚴重的問題。

2 application和session對象

基于B/S模式的系統中,由于程序的執行是通過瀏覽器解釋程序,把解釋的結果返回客戶端,因此,在頁面定義的腳本級變量,其作用范圍是本頁面,各頁面間的變量不能相互調用。如果要實現定義的變量在整個應用程序中都能被訪問,就必須使用應用程序級變量:application對象或者session對象。本文利用這兩個對象來實現公文的互斥訪問控制。

2.1 application對象

application對象定義的變量,所有用戶都能訪問和修改其數據,訪問時需要實現互斥訪問,其作用周期是服務器運行期間永久保存。利用application對象定義變量及其訪問方法如下:

2.2 session對象

session對象定義的變量,其作用周期是從用戶進入系統開始到離開系統,同時程序員可自定義該對象的作用時間。每個用戶都有一個自己的session對象,用戶自己能訪問自己的session對象定義的變量數據,但用戶相互之間不能互相訪問,互不干擾。利用session對象定義變量及其訪問方法如下:

3 公文互斥訪問解決方法

在用戶登錄時,系統利用session對象記錄當前用戶的用戶名。

3.1 獲取公文

在B/S模式的公文流轉系統中,每個公文都有與之對應的唯一公文編號作為標識,公文編號用字母和數字組成,可用隨機字母+日期(精確到秒)+隨機數的方式實現。

獲得當前公文的公文編號后,用腳本級變量document_NO記錄當前公文編號,對公文互斥訪問時,利用公文的公文編號作application對象定義的變量使用,即每個公文對應著一個application對象所定義的變量,并能使所有用戶訪問。

在此定義application對象所定義的變量時關鍵在于用一個變量替代application對象定義的變量名稱,區別于application("document_NO"), application("document_NO")定義的是一個變量名為document_NO的全局變量,而application(document_NO)定義的是以document_NO變量的值即某公文編號為變量的application對象的變量名稱。

3.2 公文互斥處理

利用鎖的并發控制機制[3],可實現對公文的互斥訪問。對任何公文的操作必須先申請該公文的鎖,只有加鎖成功后才可對公文進行操作。操作完成后,釋放所申請的鎖。如果需申請的鎖已被其它用戶鎖定則必須等待,直到那個用戶釋放該公文的鎖為止。具體實現公文的互斥訪問過程如下:

1)根據當前用戶的崗位以及權限從數據庫中查詢出未處理公文的基本信息,并給每條記錄設置進入該公文處理頁面的鏈接入口。定義該頁面文件為showmsg.asp。

2)用戶選擇公文進入公文處理頁面deal_document.asp,在進入公文處理頁面之前,先判斷application(document_NO)變量值是否為空,若為空表示沒有人正在處理該公文;若值為當前用戶名,表示當前用戶曾經因意外原因離開處理公文頁面,則當前用戶可以進入并處理該公文,同時把自己的用戶名賦值給application(document_NO)。此時,如果其他用戶想進入處理該公文,因為application(document_NO)不為空而強制轉向showmsg.asp,提示用戶該公文正在被其他人處理。

當公文正被其他人處理時,應提示用戶是誰正在處理該公文。由于application(document_NO)記錄了正在處理公文的用戶名,所有用戶都能訪問到application對象,通過訪問該對象則可實現用戶提示。application(document_NO)為空時或等于當前用戶名,表示當前該公文沒有人在辦理或當前用戶曾非正常離開此公文處理頁面,則提供進入處理該公文的鏈接;否則表示該公文現正有人處理,當前用戶不能進入處理公文,不提供鏈接并提示用戶application(document_NO)正在處理。

3.3 公文解鎖時效控制

公文解鎖時效控制特別重要,如果不能處理好解除公文鎖定問題,則公文將會進入死鎖狀態,任何用戶無法對該公文進行訪問。用戶解除對公文的鎖定有如下幾個時效:

1)當前用戶完成對公文處理,并提交給下一崗位;

2)當前用戶選擇正常退出系統(無論當前用戶是否正在處理公文還是沒有處理公文時退出系統);

3)當前用戶關閉瀏覽器;

4)當前用戶超時;

5)當前用戶回到showmsg.asp選擇其他公文(無論當前用戶是否在處理公文情況);

6)系統突然斷電。

session("treatment")這個變量記錄的是當前用戶鎖定的公文編號,如果該用戶沒有鎖定任何公文,則session("treatment")為空。對于系統中的某一用戶來說Application(session("treat ment"))與application(document_NO)等價,因為session("treatment")保存的是公文編號,具體指代當前用戶鎖定的公文編號。對于情況1)至5),先判斷session("treatment")是否為空,若為空,則執行Application(session("treatment"))=""語句,解除對該公文的鎖定。

代碼放置的位置如下:情況1)代碼應放置于當前用戶完成對公文處理,退出公文處理頁面。情況2)至4)可以把代碼放入到global.asa文件中定義的session_onend事件里面,因為這個事件是當用戶退出系統時自動執行的,所以當發生以上三種情況時都會執行這段代碼。情況5)則將代碼放在showmsg.asp頁面的最前面。

對于情況6),客戶端突然斷電,此時如果某用戶正在處理某公文,由于用戶已經鎖定該公文,而application對象所定義的變量是保存在服務器端的,斷電時application(document_NO)不會自動清空,也就無法解除對公文的鎖定,則其他用戶以及此用戶再度進入系統也不能辦理。解決的方法是在該用戶重新登陸進入系統并查詢未辦理公文,執行showmsg.asp時加入以下代碼:

4 結論

在基于B/S的公文流轉系統中,本文所研究的方法,通過應用程序級對象application和session相結合,并利用這兩個對象訪問特性差異實現了對公文的實時互斥訪問,實現過程不需要在數據庫的數據表中增加互斥訪問字段,不需要額外訪問數據庫,使實現過程對服務器的訪問代價較小。

[1] 丁寧.基于工作流模型的OA系統[J].計算機與數字工程,2008,36(7):90-94.

[2] 陳俊伽,王韜.關系數據庫并發控制機制的研究[J].科學技術與工程, 2007,7(18):4635-4637.

[3] 趙慧玲,劉美榮.SQL數據庫中并發控制的研究[J].長春工程學院學報:自然科學版,2009,10(2):78-81.

TP311

A

1009-0134(2010)11(下)-0205-03

10.3969/j.issn.1009-0134.2010.11(下).69

2010-09-29

廣西科學研究與技術開發計劃項目(0815003-4)

萬勵 (1972 -),女,廣西平南人,講師,碩士,研究方向為數據庫應用。

猜你喜歡
字段頁面定義
刷新生活的頁面
答案
讓Word同時擁有橫向頁和縱向頁
淺談臺灣原版中文圖書的編目經驗
成功的定義
CNMARC304字段和314字段責任附注方式解析
無正題名文獻著錄方法評述
關于CNMARC的3--字段改革的必要性與可行性研究
修辭學的重大定義
山的定義
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合