需求:根据JIRA项目的某字段test_field里的值,允许某些人员进行指定状态“转换”操作。如当test_field的值为test1,test2时,允许test_user进行从“提交评审”状态到“审批通过”状态的“审批”操作。常用场景如,特定项目模块,需要特定的审批人进行审批等。
实现方案:编辑工作流,选择需要进行限制的转换,如“审批”,选择“验证器”,“添加验证器”,选择“Simple scripted validator [ScriptRunner]”,写个note,如“transition_controller”,在“condition”里写上控制脚本,如下:
import com.atlassian.jira.component.ComponentAccessor
def targetField=issue.getCustomFieldValue(customFieldManager.getCustomFieldObject("customfield_11111")).value
def currentUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser;
if (targetField in ["test1","test2"]) {
if (currentUser.name in ["test_user"]) {
return true
} else {
return false
}
} else {
return true
}
然后在“Error Message”中,写上错误提示信息,如“该操作只能是test_user操作”。
注意:targetField也可以用issue.getCustomFieldValue("test_field").value来获取,但是最好用customfield_XXXX这种,避免字段名重复的问题,因为只有ID是唯一的。ID的获取方法:
进入“jira管理”,“问题”,在“自定义字段”中,找到目标字段,“编辑”,在页面的url最后部分就是该字段的ID,如:https://test_jira.test.com/secure/admin/EditCustomField!default.jspa?id=10461.