ClearQuestV7.1从乐观锁定到悲观锁定从乐观锁定到悲观锁定
随着IT科技的不断普及,越来越多公司引入项目管理工具,这使得项目管理更具有实时性,并更加透明化。ClearQuest是一个
在项目管理中常用的工具,项目参与者不仅可以通过它实时更新项目,同时也可以了解项目其他成员的进度和相关情况。
当多人次同时对同一记录编辑时,显然需要软件拥有一种处理机制来避免由于这样的操作所带来信息冲突和不便。在这种情况
下,ClearQuest应对不同的客户需求,提供了两种解决机制,称之为"乐观锁定"和"悲观锁定"。
1. 背景介绍背景介绍
在ClearQuest v7.1以前的版本中,只有一种锁定机制"乐观锁定"。它使用户很方便地更新数据,不需要做任何设置更改,也不
需要在乎其他人对该记录的操作,只要该用户直接编辑,便可顺利的完成整个数据更新步骤。从而使用户避免了复杂的加锁解
锁操作。这种情况下,在一条数据被"Apply"后,同时更新该记录的其他用户只允许编辑,而不能"Commit"。
然而在使用的过程中,越来越多的用户发现这种处理机制带来了很多的不方便,常常做了很多更改后才发现不能"Apply",而
不得不重新来做。如何使用户在编辑时就知道,该记录已经被锁定,从而避免做无用功呢?在ClearQuest v7.1中,一种新的
锁定机制被引用"悲观锁定"。如果用户A希望某条记录只能由自己编辑,其他人在这期间想要更新该记录时,可以得到提示表
明该记录已被用户A 锁定,便可使用"悲观锁定"。该机制需要用户做一些简单的设置才能生效。下图说明了"悲观锁定"的工作
方式。
接下来,本文会着重介绍ClearQuest v7.1中这种新的锁定机制"悲观锁定"。
2. 悲观锁定简介悲观锁定简介
概括的说,悲观锁定避免了在乐观锁定时,用户同时编辑记录的冲突,让每条记录有顺序的被更新。
2.1 悲观锁定的特点
悲观锁定适用Feature level 7的数据库
使用Hook脚本对其设置
在执行"Apply","Revert"或是超时后,锁定记录被自动解锁
超级用户可以强制性解除锁定,每个用户也可以解除自己的锁定
可以使用"Lock_by"域来查询被锁记录
2.2 设置悲观锁定
ClearQuest v7.1中不能直接通过客户端使用悲观锁定,必须通过一定的配置来实现该功能。下面以一个常用的操作为例子,
介绍一下如何进行设置。
假设两个用户Alice,Bob同时更改记录SAMPL00000001,Alice对该记录做了锁定设置,当Bob此时想要编辑该记录时,被提
示该记录被锁定,通知管理员解锁。
第一步,在ClearQuest Designer中新建一个类型为Base的行为Lock,对该行为新建一个初始化行为(Action_Initialization)
脚本LockRecord,编写脚本:"$entity->LockRecord(0)",这里我们选用perl脚本作为编辑脚本。