版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、当许多不同的用户共享ClearQuest中的一个缺陷数据库时,管理员可能需要确保只有记录的所有者可以修改他或她自己的记录。本文提供了完成此方法的一个详细的过程。考虑一下以下情形:在一个缺陷数据库中有许多用户。这些用户可能来自许多不同项目的不同团队。为了避免混乱和系统中的不可预期的操作,IBM Rational ClearQuest管理员可能需要分隔每个用户的记录,因而只有记录的拥有者可以查看和修改他或她自己的记录。如果我们按照项目来分类这些用户,那么从一个个项目的观点来看,缺陷数据库对每个用户和每个项目看起来都是唯一的。本文阐明了一个ClearQuest管理员可以如何通过提交者来分隔缺陷记录。
2、本文提供了定制数据库过程的一步步的细节内容,并且包括一些如何对某些字段控制访问权限的钩子函数。介绍ClearQuest是软件开发中变更管理的一个强有力的工具。它是高度可定制的,使用户能够灵活地控制他们的不同变更管理过程。ClearQuest也提供一些预定义的模板,它们从一些变更管理的最佳实践开始,将逐步地带领你领略此工具的微妙之处,举例来说,当你应用其中一个标准模板来管理你的变更管理过程时,所有的团队成员缺省可以查询数据库中的所有记录。这可能会引起你的团队的混乱,或者可能会导致某些不可预期或不争取的操作特别是当你在一个数据库中有多个项目时。你可能想通过所有者、项目、角色或组来分隔这些记录。Cl
3、earQuest提供了一个称为Security Context的机制,来帮助你达成此目标。在我的例子中,我使用TestStudio作为模板,并解释了如何定制此模板,来按照提交者来分隔缺陷记录。通常的步骤如下:1. 定义你的隔离方针,然后创建适当的组。 2. 创建一个security context记录类型。 3. 修改你想要进行权限控制的记录类型,并增加一个reference字段。 4. 如果需要,编写一些hook。 5. 将模板应用于用户数据库,并做一些事先调整。 注意:此方法并不限于缺陷记录;它可以应用于任何你想进行权限控制的记录类型中。然而,下面的场景将集中在缺陷管理上。详细步骤在此场景
4、中,一个项目中的测试人员只能查看和修改他们自己提交的记录,但是测试经理组的成员可以查看所有的记录。作为一个测试人员,每次你提交一个缺陷,缺陷的security context字段会自动地将你设置为所有者。只有ClearQuest管理员可以查看和修改security context记录类型。此例子假定你熟悉ClearQuest定制过程我将会浏览一下这些步骤,但不是详述幕后发生了什么。如果你对此过程比较陌生,请查看你的ClearQuest文档中的有关定制过程。1. 首先,你需要使用ClearQuest User Administration工具定义适当的组。我通常为每个测试人员定义一个组,然后创建
5、一个测试经理组。在某种意义上,这些组代表了你的项目定义中的特定角色。例如,图1-5显示了关于我定义的组的详细内容: 图1:在ClearQuest中设置组组xiaming、yangrong、zhanghan、yangrongwei和gengxueping都分别是单个测试人员的测试组。TestManager组是测试经理角色的组。图2:TestManager组的定义图3:ClearQuest管理员的SuperAdmin组的定义图4:定义一个Guest组如果经过ClearQuest管理员授权,你也可以设置一个Guest组,用于不在你的项目中的用户来访问那些缺陷记录。图5:为一个单独测试人员设置一个组这
6、个单个测试人员组的例子包括成员组Guest和TestManager。2. 打开ClearQuest Designer,登录到你的目标schema数据库,并检出(check out)TestStudio模版进行编辑。增加一个新的状态无关记录类型,名为ACL(此过程的步骤如下面的图6-11所示)。此记录类型用作security context记录类型。 图6:增加一个新的状态无关记录类型图7:ACL记录类型的字段定义图8:ACL记录类型的action定义图9:ACL记录类型的behavior定义图10:ACL记录类型的主键定义图11:ACL记录类型的form定义3. 修改缺省的缺陷记录类型,在缺陷
7、记录类型中增加一个新字段。这个字段用于对security context记录的关联,如图12和13所示。 图12:缺陷记录中的ACL字段定义图13:将ACL字段的behavior设置为USE_HOOK。4. 为了自动地分割缺陷,在关联字段上增加一个default value hook。尽管ClearQuest支持两种脚本语言(VBScript和Perl),但是以下脚本的例子使用了Perl: sub acl_DefaultValue my($fieldname) = _;my $session;my $username;$session = $entity-GetSession();$usern
8、ame = $session-GetUserLoginName();$entity-SetFieldValue($fieldname, $username);5. 在关联字段上增加一个permission hook,在改变一个缺陷记录时设置控制权限。 sub acl_Permission my($fieldname, $username) = _;my $result;my $userGroups, $sessionObj;my $AuthorizedUserGroup = SuperAdmin;# By default, set this field readonly$result = $C
9、QPerlExt:CQ_READONLY; $sessionObj = $entity-GetSession();$userGroups = $sessionObj-GetUserGroups();if(!$userGroups) $result = $CQPerlExt:CQ_READONLY; else foreach $strAnGroup ($userGroups) if ($strAnGroup eq $AuthorizedUserGroup)$result = $CQPerlExt:CQ_OPTIONAL;last;return $result;6. 在缺陷记录的action上增加
10、一个access control hook。在我的例子中,我在action Modify、Delete、Duplicate和Unduplicate上增加了此hook。为了更好地维护和重用代码,我使用record scripts来增强代码可重用性。 在一个action的access control hook中调用代码的一个例子如下:sub Defect_AccessControl my($actioname, $actiontype, $username) = _;my $result;my $params = $actioname.n.$actiontype.n.$username;$resu
11、lt = $entity-FireNamedHook(RS_AccessControl,$params);return $result;调用代码的一个例子,其是一个record script,名为RS_AccessControl:sub Defect_RS_AccessControl my($result);my($param) = _;# record type name is Defectif (ref ($param) eq CQEventObject) # add your CQEventObject parameter handling code here elsif (ref ($
12、param) eq SCALAR) $sessionObj = $entity-GetSession();params = split n,$param;my $username = $params2;?$fieldInfo = $entity-GetFieldValue(Submitter);$strSubmitterName = $fieldInfo-GetValue();# test if the user belongs to group TestManager$userGroups = $sessionObj-GetUserGroups();$FlagYes = yes;$FlagN
13、o = no;$AuthorizedUserGroup1 = TestManager;$AuthorizedUserGroup2 = SuperAdmin;$flag = $FlagNo;if (!$userGroups) $flag = $FlagNo; else foreach $strAnGroup ($userGroups) if ( ($strAnGroup eq $AuthorizedUserGroup1) |($strAnGroup eq $AuthorizedUserGroup2) )$flag = $FlagYes;last;# test if the user is sam
14、e as the submitter or belongs to group TestManagerif ( $username eq $strSubmitterName)|($flag eq $FlagYes)$result = 1; else $result = 0; else # add your handling code for other type parameters here, for example:# die(Unknown parameter type);return $result;7. 使用用户组修改ACL记录类型上的所有action的控制权限,如图14所示。 图14:设置控制权限这显示了只有在SuperAdmin组中的成员可以对ACL记录类型操作。8. 检入schema,并将此涉及应用到你的用户数据库中。 9. 最后,ClearQuest管理员需要手工地增加一些security
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地毯剪花工岗后水平考核试卷含答案
- 送配电线路工安全知识宣贯水平考核试卷含答案
- 闪速炉熔炼工创新方法强化考核试卷含答案
- 乒乓球制作工岗前执行力考核试卷含答案
- 制浆备料工技术落地模拟考核试卷含答案
- 船艇救生员诚信品质知识考核试卷含答案
- 质检员岗中安全教育考核试卷含答案
- 砖瓦生产中控员道德模拟考核试卷含答案
- 儿童急性呼吸道感染性疾病合理用药指南解读
- 动物微生物学及免疫学课件-病毒
- 《人工智能清扫机器人(车)技术要求》
- 职业卫生技术服务专业技术人员考试(职业卫生评价)例题及答案(北京市)
- 202670周岁以上老年人换长久驾照三力测试题库(附答案)
- 2026年江苏宿迁市中考语文试卷含答案
- 2024版骨质疏松症康复治疗指南课件
- 劳动合同2026年标准范本协议
- 无主灯光设计
- en590现货销售合同
- 肿瘤免疫学讲解培训课件
- 自动扶梯与自动人行道监督检验自检报告
- 2026四川成都市公共交通集团有限公司招聘储备人才等岗位备考题库附答案详解(培优)
评论
0/150
提交评论