Jira使用笔记二 ScriptRunner 验证问题创建角色

背景

最近在对公司Jira工作流改造,收到这么一个要求:某些问题类型只有某些角色可以创建。本来是想通过Jira内建的权限控制来处理的。结果点到权限页面,心都凉透了。
在这里插入图片描述
好吧,那只能上脚本了。最终使用ScriptRunner的Simple scripted validator完成了需求。

//查询指定用户在哪些项目中为管理员角色
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.roles.ProjectRoleManager
import com.atlassian.jira.project.ProjectManager
import com.atlassian.jira.project.Project
import com.atlassian.jira.security.roles.ProjectRole
import java.util.Collection;
import com.atlassian.jira.user.util.UserManager

ProjectManager projectManager = ComponentAccessor.getProjectManager()
ProjectRoleManager projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
UserManager  userManager = ComponentAccessor.getUserManager();
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
Project project = issue.getProjectObject();
 
Collection<ProjectRole> projectRoles = projectRoleManager.getProjectRoles(user, project)
for(ProjectRole role:projectRoles){
    log.warn(role.getName())
    if(role.getName() == "产品经理"){
        return true;
    }
}
return false;

配置图如下:
在这里插入图片描述

### Jira ScriptRunner 插件的功能与使用 ScriptRunner 是一款强大的 Atlassian Marketplace 插件,专为增强 Jira 的自动化能力而设计。它允许管理员通过编写脚本来扩展 Jira 功能,从而实现高度定制化的工作流管理、数据操作以及与其他系统的集成。 #### 主要功能 1. **工作流自动化**: 使用 Groovy 脚本自定义 Jira 工作流行为,例如在特定条件下自动更新字段值或触发通知[^6]。 2. **监听器 (Listeners)**: 创建自定义事件监听器来响应各种 Jira 事件(如创建问题、状态变更),并执行相应的逻辑处理[^7]。 3. **调度任务 (Scheduled Jobs)**: 定义定时运行的任务以完成周期性的维护或报告生成等工作。这类似于其他语言中的 `cron` 或者提到的 Go 库中用于作业调度的部分[^4]。 4. **REST API 扩展**: 添加新的 REST 端点到现有的 JIRA 实例上,使得外部应用程序可以通过 HTTP 请求调用来控制内部业务流程[^8]。 5. **实用工具集合**: 提供一系列预构建好的脚本模板和函数库,简化常见任务的操作难度,比如批量修改项目配置项或者查询复杂条件下的记录列表[^9]。 #### 基础安装与设置指南 为了开始使用 ScriptRunner,在官方文档中有详细的指导说明可以遵循: - 首先访问 [Atlassian MarketPlace](https://marketplace.atlassian.com/) 下载对应版本号的产品包文件(.jar); - 将其上传至目标服务器环境并通过重启服务生效新组件加载过程; - 登录后台管理系统界面找到新增加出来的选项卡入口进入具体参数调整页面即可开启探索之旅啦! 以下是简单的例子展示如何利用该插件实现某些基本需求场景之一——当某个事务被分配给用户时发送邮件提醒给他/她知道这件事发生了变化: ```groovy import com.onresolve.scriptrunner.runner.customisers.WithPlugin @WithPlugin("com.onresolve.jira.groovy.groovyscripts") def sendEmailToAssignee(issue){ def assignee = issue.getAssignee() if(assignee != null ){ mailServer.send( from:"[email protected]", to:[assignee.getEmailAddress()], subject:"You've been assigned an Issue!", body:"Hello ${assignee.displayName},\n\nAn issue has been assigned to you:\n${issue.key} - ${issue.summary}\n\nPlease check it out." ) } } ``` 此代码片段展示了怎样借助内置方法获取当前议题对象及其关联属性值,并进一步组合成符合预期格式的消息体内容传递出去。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值