CQ----重写某个动作的操作权限

 
 
       动作权限管理以前的做法是在动作的后面选择组,这个组的里面的人就可以进行这个操作,但现在要根据记录是需求的 还是 缺陷的来决定能不能进行这操作,如果这个记录是需求的,就不能进行缺陷的操作,如果这个记录是需求的就不能进行缺陷的操作。因为这个要求,就不可能简单的配置出来了,要使用脚本重写这个动作的权限,包括检查:
1.       登入者能不能进行提交缺陷的操作,能不能进行提交需求的操作
2.       如果登入者即有提交缺陷的操作权限,又有提交需求的操作权限,那么要检查记录是缺陷的还是需求的,是缺陷的,就只能进行提交缺陷的操作,是需求的就只能进行提交需求的操作
 
设计:
条件:有“缺陷组”和“需求组”两个组
      “缺陷组”包含“缺陷人员”,“需求组”包含“需求人员”
      界面上有一个字段“记录类型”,可选值“缺陷”、“需求”
要求:
       缺陷组的人员执行“提交缺陷”动作,记录从“已提交”状态流转到“缺陷已提交”
       需求组的人员执行“提交需求”动作,记录从“已提交”状态流转到“需求已提交”
限制:
        在执行“提交缺陷”动作时,检查:
1.       登入者是否是“缺陷组”的人
2.       当前“已提交”界面上的“记录类型”值是“缺陷”
如果上面两项检查都是结果都是“是”,则可以执行“提交缺陷”动作,否则不能执行该动作
 
执行“提交需求”动作时检查同理。
 
在CQ Designer上的操作步骤:
1.       用超级用户登入CQ Designer,并check out模板
2.       添加组、人员、关联的缺陷库 略,根据上面的条件来配
3.       添加字段“记录类型” 略,注意的是,type 选择 SHORT_STRING即可
4.       添加状态“缺陷已提交”、“需求已提交”和动作“提交缺陷”、“提交需求”,以及从“已提交”状态到“缺陷已提交”、“需求已提交”的配置 略
5.       配置“提交缺陷”的权限:
在“提交缺陷”后面type列选择“CHANGE_STATE”
Access Control列选择“BASIC”,其他列默认
双击“BASIC”字段,界面跳转到代码编辑界面,在其中写入代码。编辑好的整段代码在最后面。
6.       点工具条上的“√”检查代码有没有语法错误,调试,直到检查通过
7.       保存改动,并check in
8.       将这个改动同步到缺陷库中,并新建几个不同的记录来验证结果是否正确
9.       哈哈,大功告成,整了我一上午,第二次给CQ加代码,记录备忘!
 
   
 
Function Defect_AccessControl(actionname, actiontype, username)
 
rem 定义变量
       Dim session
       Dim loginName
 
      Dim sessionObj
      Dim queryObj
      Dim filterObj
      Dim resultSetObj
       Dim userInGroup
 
       Dim value_leix
    Dim leix_pand
 
 
rem 得到当前用户
 
'      Dim session
'      Dim loginName
        ' Get the session
      set session = GetSession
       ' Get the logon name
      loginName = session.GetUserLoginName
 
 
rem 判断登入者是否属于缺陷提交组
' Dim sessionObj
' Dim queryObj
' Dim filterObj
' Dim resultSetObj
 
' Initial
       userInGroup = 0
 
Set sessionObj = GetSession()
' start building a query of the users
Set queryObj = sessionObj.BuildQuery("users")
' have the query return the desired field of the user object(s)
queryObj.BuildField ("login_name")
 
' filter for members of group groupname (whatever group you want)
Set filterObj = queryObj.BuildFilterOperator(AD_BOOL_OP_AND)
filterObj.BuildFilter "groups", AD_COMP_OP_EQ, “缺陷组”
Set resultSetObj = sessionObj.BuildResultSet(queryObj)
 
' run it
resultSetObj.Execute
 
Do While resultSetObj.MoveNext = AD_SUCCESS
If loginName= resultSetObj.GetColumnValue(1) Then
userInGroup = 1
End If
Loop
 
 
rem 判断记录类型是否是缺陷
'      Dim value_leix
'      Dim leix_pand
 
      leix_pand= 0
        value_leix=""
 
    value_leix = GetFieldValue("记录类型").GetValue()
 
    If value_leix = "缺陷" Then
        leix_pand= 1
     End If
   
 
rem 如果记录类型是“缺陷”并且 登入者属于“缺陷组”,则可以进行提交缺陷的动作,
rem否则不能
 If leix_pand = 1 and userInGroup = 1 Then
         Defect_AccessControl = TRUE
 Else
        Defect_AccessControl = FALSE
 End If
 
End Function
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值