日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
ClearQuest V7.1從樂(lè)觀鎖定到悲觀鎖定

隨著IT科技的不斷普及,越來(lái)越多公司引入項(xiàng)目管理工具,這使得項(xiàng)目管理更具有實(shí)時(shí)性,并更加透明化。ClearQuest是一個(gè)在項(xiàng)目管理中常用的工具,項(xiàng)目參與者不僅可以通過(guò)它實(shí)時(shí)更新項(xiàng)目,同時(shí)也可以了解項(xiàng)目其他成員的進(jìn)度和相關(guān)情況。

陸河網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)

當(dāng)多人次同時(shí)對(duì)同一記錄編輯時(shí),顯然需要軟件擁有一種處理機(jī)制來(lái)避免由于這樣的操作所帶來(lái)信息沖突和不便。在這種情況下,ClearQuest應(yīng)對(duì)不同的客戶(hù)需求,提供了兩種解決機(jī)制,稱(chēng)之為"樂(lè)觀鎖定"和"悲觀鎖定"。

1. 背景介紹

在ClearQuest v7.1以前的版本中,只有一種鎖定機(jī)制"樂(lè)觀鎖定"。它使用戶(hù)很方便地更新數(shù)據(jù),不需要做任何設(shè)置更改,也不需要在乎其他人對(duì)該記錄的操作,只要該用戶(hù)直接編輯,便可順利的完成整個(gè)數(shù)據(jù)更新步驟。從而使用戶(hù)避免了復(fù)雜的加鎖解鎖操作。這種情況下,在一條數(shù)據(jù)被"Apply"后,同時(shí)更新該記錄的其他用戶(hù)只允許編輯,而不能"Commit"。

然而在使用的過(guò)程中,越來(lái)越多的用戶(hù)發(fā)現(xiàn)這種處理機(jī)制帶來(lái)了很多的不方便,常常做了很多更改后才發(fā)現(xiàn)不能"Apply",而不得不重新來(lái)做。如何使用戶(hù)在編輯時(shí)就知道,該記錄已經(jīng)被鎖定,從而避免做無(wú)用功呢?在ClearQuest v7.1中,一種新的鎖定機(jī)制被引用"悲觀鎖定"。如果用戶(hù)A希望某條記錄只能由自己編輯,其他人在這期間想要更新該記錄時(shí),可以得到提示表明該記錄已被用戶(hù)A 鎖定,便可使用"悲觀鎖定"。該機(jī)制需要用戶(hù)做一些簡(jiǎn)單的設(shè)置才能生效。下圖說(shuō)明了"悲觀鎖定"的工作方式。

接下來(lái),本文會(huì)著重介紹ClearQuest v7.1中這種新的鎖定機(jī)制"悲觀鎖定"。

2. 悲觀鎖定簡(jiǎn)介

概括的說(shuō),悲觀鎖定避免了在樂(lè)觀鎖定時(shí),用戶(hù)同時(shí)編輯記錄的沖突,讓每條記錄有順序的被更新。

2.1 悲觀鎖定的特點(diǎn)

◆悲觀鎖定適用Feature level 7的數(shù)據(jù)庫(kù)

◆使用Hook腳本對(duì)其設(shè)置

◆在執(zhí)行"Apply","Revert"或是超時(shí)后,鎖定記錄被自動(dòng)解鎖

◆超級(jí)用戶(hù)可以強(qiáng)制性解除鎖定,每個(gè)用戶(hù)也可以解除自己的鎖定

◆可以使用"Lock_by"域來(lái)查詢(xún)被鎖記錄

2.2 設(shè)置悲觀鎖定

ClearQuest v7.1中不能直接通過(guò)客戶(hù)端使用悲觀鎖定,必須通過(guò)一定的配置來(lái)實(shí)現(xiàn)該功能。下面以一個(gè)常用的操作為例子,介紹一下如何進(jìn)行設(shè)置。

假設(shè)兩個(gè)用戶(hù)Alice,Bob同時(shí)更改記錄SAMPL00000001,Alice對(duì)該記錄做了鎖定設(shè)置,當(dāng)Bob此時(shí)想要編輯該記錄時(shí),被提示該記錄被鎖定,通知管理員解鎖。

第一步,在ClearQuest Designer中新建一個(gè)類(lèi)型為Base的行為L(zhǎng)ock,對(duì)該行為新建一個(gè)初始化行為(Action_Initialization)腳本LockRecord,編寫(xiě)腳本:"$entity->LockRecord(0)",這里我們選用perl腳本作為編輯腳本。

第二步,用類(lèi)似的方法再建一個(gè)UnLockRecord行為,選擇此行為的類(lèi)型為RECORD_SCRIPT_ALIAS,新建記錄腳本UnLockRecord,并與UnLockRecord行為關(guān)聯(lián)。

腳本UnLockRecord:

 
 
 
  1. sub Defect_UnlockRecord {  
  2.     my($result);  
  3.     my($param) = @_;  
  4.     # record type name is Defect     
  5.     $result = "";  
  6.     my $locked_by = $entity->GetLockOwner();  
  7.     if ($locked_by ne "") {  
  8.         my $do_unlock = $session->IsUserSuperUser();  
  9.         if (! $do_unlock) {  
  10.             # If the current user holds the lock, let them unlock it.  
  11.             my $username = $session->GetUserLoginName();  
  12.             if ($username =~ /^$locked_by$/i) {  
  13.                 $do_unlock = 1;  
  14.             }  
  15.         }  
  16.         if (! $do_unlock) {  
  17.             # Additional options to "authorize" unlocking:  
  18.             # 1) allow if user is a member of an "unlock" group  
  19.             #    get user's groups, check if member  
  20.             # 2) allow for privileged users, e.g. Security Administrator  
  21.             #    check session for the chosen privilege  
  22.             # 3) many other possibilities  
  23.             #  
  24.             # if ( user-should-be-allowed-to-unlock-the-record ) {  
  25.             #     $do_unlock = 1;  
  26.             # }  
  27.         }  
  28.         if ($do_unlock) {  
  29.             $entity->UnlockRecord();  
  30.         }  
  31.         else {  
  32.             $result = "You are not allowed to unlock this record.";  
  33.         }  
  34.     }  
  35.     return $result;  

現(xiàn)在升級(jí)你的數(shù)據(jù)庫(kù),至此我們便完成了鎖定設(shè)置。

接下來(lái),在ClearQuest客戶(hù)端中建立一個(gè)對(duì)鎖定記錄的查詢(xún),這里使用域"Lock_by"作為filter,選擇覺(jué)得可能的Owner。值得提一下的是,這個(gè)域在v7.1之前作filter是無(wú)效的,而在v7.1中加入悲觀鎖定功能后,通過(guò)它可以看到哪些記錄被鎖了,誰(shuí)鎖了等等這些信息。

2.3 驗(yàn)證

下面檢驗(yàn)一下剛才的設(shè)置。

第一步,使用ClearQuest Administrator創(chuàng)建兩個(gè)用戶(hù)Alice,Bob,見(jiàn)下圖。

第二步,分別使用Alice和Bob兩個(gè)帳號(hào)登錄ClearQuest客戶(hù)端。先讓我們檢查一下Unlock Action是不是在Action Dropdown list中以及新建的域Lock_by能否在客戶(hù)端顯現(xiàn)。

第三步,假設(shè)Alice正在對(duì)記錄SAMPL00000001編輯,Bob試圖修改該記錄,發(fā)現(xiàn)此記錄被鎖,于是告知管理員希望他解除鎖定。

第四步,在進(jìn)行解鎖之前,我們利用剛才建的查詢(xún),查看一下,現(xiàn)在被鎖定的記錄,返回結(jié)果當(dāng)前只有一條記錄被鎖,即SAMPL00000001。

第五步,我們有Apply,Revert和Unlock三種方式解除記錄鎖定,先看看這三種方式有什么不同。

Apply -- Bob在此動(dòng)作后編輯SAMPL00000001,會(huì)發(fā)現(xiàn)自己仍然不能進(jìn)行操作,這是因?yàn)榇藭r(shí)兩人所屬的數(shù)據(jù)庫(kù)并不同步,Bob如果想要繼續(xù)編輯記錄,需要重新連接數(shù)據(jù)庫(kù).

Revert -- 大家應(yīng)該已經(jīng)猜到了,這個(gè)時(shí)候Bob可以成功編輯SAMPL00000001

Unlock -- 這是通過(guò)hook腳本來(lái)解除鎖定,所以Bob也可以編輯SAMP SAMPL00000001

對(duì)于前兩種操作,作為用戶(hù)的Alice都可以幫助Bob解除記錄鎖,但是如果想要使用Unlock動(dòng)作,我們必須通知高級(jí)管理員,普通用戶(hù)并沒(méi)有權(quán)限執(zhí)行該動(dòng)作。

第六步,這里我們用上面設(shè)置的Unlock行為來(lái)解鎖。使用Admin用戶(hù)登錄ClearQuest客戶(hù)端,點(diǎn)擊"Unlock"?;仡^再來(lái)看看,Bob現(xiàn)在能不能編輯SAMPL00000001。可以看到,現(xiàn)在Bob可以成功編輯SAMPL00000001了。

3. 補(bǔ)充

實(shí)際上,鎖定一條或多條記錄,除了上面講到的建立一個(gè)Base的行為L(zhǎng)ock以外,也可以類(lèi)似與Unlock行為一樣,建立一個(gè)類(lèi)型為RECORD_SCRIPT_ALIAS的Lock行為,這樣做可以方便用戶(hù)自己決定是否鎖定記錄。

感興趣的朋友還可以通過(guò)findrecordlocks.pl 進(jìn)一步找到當(dāng)前被鎖記錄的一些相關(guān)信息,該腳本在ClearQuest V7.1的安裝目錄下  \IBM\RationalSDLC\ClearQuest\,運(yùn)行:

 
 
 
  1. cqperl findrecordlocks.pl  [-dbset < dbset_name>]  
  2.                            [-database < user_database>]  
  3.                            < clearquest_login> 
  4.                            < clearquest_password> 
  5.                            { < record_type_list> | -all }  
  6.                            [-unlock]  
  7.                            [-scan < interval>]  
  8.                            [-timeout < interval>]  
  9.                            [-times < times>]  
  10.                            [-loglevel < error|info|verbose>]  

以上面的記錄SAMPL00000001為例,Alice鎖住了記錄SAMPL00000001,運(yùn)行:

cqperl "F:\Program Files\IBM\RationalSDLC\ClearQuest\findrecordlocks.pl"-dbset ss admin "" Defect,看看結(jié)果是不是如實(shí)際操作的一樣。

4. 附錄

類(lèi)型為RECORD_SCRIPT_ALIAS的Lock行為的perl腳本

 
 
 
  1. sub Defect_LockRecord {  
  2.     my($result);  
  3.     my($param) = @_;  
  4.     # record type name is Defect  
  5.     if (ref ($param) eq "CQEventObject") {  
  6.         # add your CQEventObject parameter handling code here  
  7.     } elsif (ref (\$param) eq "SCALAR") {  
  8.         # add your scalar parameter handling code here  
  9.         # The Web clients support scalar paramter type only,  
  10.         # so the hook code added in the above section, needs to be duplicated here  
  11.     } else {  
  12.         # add your handling code for other type parameters here, for example:  
  13.         # die("Unknown parameter type");  
  14. }  
  15. $entity->LockRecord(0);  
  16.     return $result;  

5.結(jié)束語(yǔ)

本文介紹了ClearQuest V7.1中的記錄鎖定機(jī)制,重點(diǎn)讓大家了解了兩種鎖定機(jī)制及如何使用"悲觀鎖定。"

【編輯推薦】

  1. SQL Server樂(lè)觀鎖定和悲觀鎖定實(shí)例
  2. 解析敏捷測(cè)試的十大“神話(huà)”
  3. 專(zhuān)家解析如何有效的簡(jiǎn)化你的軟件開(kāi)發(fā)
  4. 用TeamDefine“真實(shí)地”模擬需求定義
  5. 演進(jìn)式架構(gòu)設(shè)計(jì)在敏捷開(kāi)發(fā)中的使用

新聞名稱(chēng):ClearQuest V7.1從樂(lè)觀鎖定到悲觀鎖定
分享路徑:http://m.5511xx.com/article/cogpcje.html