【问题标题】:Listing All JIRA Transitions via API通过 API 列出所有 JIRA 转换
【发布时间】:2015-11-02 21:32:42
【问题描述】:

我希望在 JIRA 中设置智能提交,但我的开发人员想知道他们的转换的所有选项。为了帮助他们,我想打印一份包含所有转换名称的备忘单(我相信他们足够聪明,可以从那里弄清楚什么是什么)。

但是当我查看 REST API 文档时,我只能找到一种获取list of transitions for a particular issue 的方法(大概是通过它的状态)。有没有办法获取任何工单在其工作流程中的任何时候都可以进行的所有个转换列表?

【问题讨论】:

    标签: jira jira-rest-api


    【解决方案1】:

    您可以使用/rest/api/2/project/{projectIdOrKey}/statuses 端点获取项目的所有转换。这是响应示例,请查看“状态”数组:

    [
        {
            "self": "http://localhost:8090/jira/rest/api/2.0/issueType/3",
            "id": "3",
            "name": "Task",
            "subtask": false,
            "statuses": [
                {
                    "self": "http://localhost:8090/jira/rest/api/2.0/status/10000",
                    "description": "The issue is currently being worked on.",
                    "iconUrl": "http://localhost:8090/jira/images/icons/progress.gif",
                    "name": "In Progress",
                    "id": "10000"
                },
                {
                    "self": "http://localhost:8090/jira/rest/api/2.0/status/5",
                    "description": "The issue is closed.",
                    "iconUrl": "http://localhost:8090/jira/images/icons/closed.gif",
                    "name": "Closed",
                    "id": "5"
                }
            ]
        }
    ]
    

    但它并没有为您提供任何问题随时可能发生的转换的确切列表,我不确定 API 中是否存在这种方法。

    【讨论】:

    • 但这不是转换 - 它是状态。转换名称 - 将问题从一种状态转移到另一种状态的操作名称。
    【解决方案2】:
    public void changeStatus(IssueRestClient iRestClient,
            List<Statuses> JiraStatuses, String key) {
        String status = "To Do";
        for (Statuses statuses : vOneToJiraStatuses) {
            if (1 == statuses.compareTo(status)) {
                try {
                    String _transition = statuses.getTransition();
                    Issue issue = iRestClient.getIssue(key).get();
                    Transition transition = getTransition(iRestClient, issue,
                            _transition);
                    if (!(isBlankOrNull(transition))) {
    
                        if (!(issue.getStatus().getName()
                                .equalsIgnoreCase(_transition)))
                            transition(transition, issue, null, iRestClient,
                                    status);
                    }
                } catch (Exception e) {
                    Constants.ERROR.info(Level.INFO, e);
    
                }
                break;
            }
        }
    
    }
    

    List 是一个 pojo 实现,xml 中定义的状态和转换通过 setter/constructor 注入。

    private void transition(Transition transition, Issue issue,
            FieldInput fieldInput, IssueRestClient issueRestClient,
            String status) throws Exception {
    
        if (isBlankOrNull(fieldInput)) {
            TransitionInput transitionInput = new TransitionInput(
                    transition.getId());
    
                    issueRestClient.transition(issue, transitionInput).claim();
            Constants.REPORT.info("Status Updated for : " + issue.getKey());
        } else {
            TransitionInput transitionInput = new TransitionInput(
                    transition.getId());
            issueRestClient.transition(issue, transitionInput).claim();
            Constants.REPORT.info("Status Updated for : " + issue.getKey());
    
        }
    }
    
    public Transition getTransition(IssueRestClient issueRestClient,
            Issue issue, String _transition) {
    
            Promise<Iterable<Transition>> ptransitions = issueRestClient
                .getTransitions(issue);
        Iterable<Transition> transitions = ptransitions.claim();
        for (Transition transition : transitions) {
    
            if (transition.getName().equalsIgnoreCase(_transition)) {
                return transition;
            }
        }
        return null;
    }
    

    简而言之,使用 JIRA 的转换 API,我们可以获取所有转换来设置状态

    【讨论】:

      【解决方案3】:

      您可以通过此端点列出给定工单的转换:

      /rest/api/2/issue/${issueIdOrKey}/transitions
      

      如需更深入的解释,请查看此处: Does the JIRA REST API require submitting a transition ID when transitioning an issue?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-26
        • 1970-01-01
        • 1970-01-01
        • 2020-03-26
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多