【问题标题】:Automatically Transition Epic to In Progress when a linked story move to in progress当链接的故事移至进行中时,自动将史诗转换为进行中
【发布时间】:2017-10-01 04:16:59
【问题描述】:

我目前在 JIRA 7.3 上,我安装了 scriptRunner,我不熟悉 groovy,我也不知道从哪里开始,每个 JIRA 管理器意味着什么,在哪里可以找到这些管理器的列表及其描述。

我想要一个功能,当其中一个链接问题发生移动时,Epic 会自动转换为“进行中”。此外,当所有故事都移至“待办事项”或“完成”时,Epic 将自动转换为与链接问题相同的状态。

任何指向教程、视频或带有解释的脚本的链接都会有所帮助。非常感谢您的帮助

【问题讨论】:

    标签: groovy jira


    【解决方案1】:

    在下面找到一个示例,该示例展示了如何查找问题的链接史诗并通过执行转换来更新史诗的状态。这是 ScriptRunner 的 Groovy 脚本。我在脚本控制台中对此进行了快速测试,但您可以将此类脚本与工作流转换的 post 功能一起使用。

    import com.atlassian.jira.component.ComponentAccessor;
    import com.atlassian.jira.issue.CustomFieldManager;
    import com.atlassian.jira.issue.fields.CustomField;
    import com.atlassian.jira.issue.Issue;
    import com.atlassian.jira.issue.MutableIssue;
    import com.atlassian.jira.issue.IssueManager;
    
    import com.atlassian.jira.issue.IssueInputParameters;
    import com.atlassian.jira.issue.IssueInputParametersImpl;
    import com.atlassian.jira.bc.issue.IssueService
    
    CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
    IssueManager issueManager = ComponentAccessor.getIssueManager();
    IssueService issueService = ComponentAccessor.getComponent(IssueService);
    CustomField epicLinkField = customFieldManager.getCustomFieldObjectByName('Epic Link');
    
    //hardcode lookup to issue for script console:
    MutableIssue issue = issueManager.getIssueObject("FID-15"); 
    
    IssueInputParameters issueInputParameters = new IssueInputParametersImpl([:]);
    
    //lookup the corresponding epic via the subtask's parent
    MutableIssue epic = issueManager.getIssueObject(
        (String)issue.getCustomFieldValue(epicLinkField)
    );
    
    // 21 is the transition ID in my workflow
    IssueService.TransitionValidationResult validationResult = 
        issueService.validateTransition(epic.getAssignee(), 
        epic.id, 21 as Integer, issueInputParameters)
    
    def errorCollection = validationResult.errorCollection
    log.error(errorCollection)
    if (! errorCollection.hasAnyErrors()) {
        issueService.transition(epic.getAssignee(), validationResult)
        log.error("OK")
    }
    else {
        log.error("ERROR")
    }
    

    【讨论】:

    • 非常感谢您的帮助。一问一想。有没有办法可以在不硬编码问题查找的情况下做到这一点?
    • 是的,当然。使用 ScriptRunner,您可以为工作流转换或(事件)侦听器创建一个 post 函数。 SR 文档解释了how to deal with these issue events
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多