通过 JIRA REST 访问转换历史 API

accessing transition history via JIRA REST API

我发现另一个人显然有这个问题,但我想我会重新提出这个问题,看看是否可以更明确。

我正在使用 JIRA 6 REST 网络 API 并成功提取大量与我们的网络云相匹配的数据 UI。

现在我想查看给定问题已经完成的转换,最好是有关谁执行转换的信息。

我可以在我们的 JIRA 网络中看到这个转换历史 UI 但我还没有弄清楚如何以编程方式访问。

听起来很有希望API:

http://example.com:8080/jira/rest/api/2/issue/{issueIdOrKey}/transitions [GET, POST]

这就是之前的提问者似乎一直在使用的API。据我所知,只有 returns 您可以在给定时间点就此问题提出的有效转换。

我想要转换的历史记录,例如问题何时进行代码审查、质量检查、关闭等。

我已经完成了 expand=changelog,但更改日志与我看到的转换不相关。

如有任何提示,我们将不胜感激。谢谢

当您使用 expand=changelog 时,所有在 issue 中所做的更改都在那里。在 Web 浏览器中查看时,与 Activity 部分的所有选项卡中的信息完全相同。

当我发送时:

http://jira.my.server.se/rest/api/2/issue/KEYF-42346?expand=changelog

changelog 键下,我找到 histories 的列表。每个 history 都有项目列表。这些项目是在特定字段上执行的更改,具有来回值。

要查找所有状态更改,您需要执行以下操作:

for history in issue.changelog.histories:
    for item in history.items:
        if item.field == "status":
            print item.toString # new value
            print item.fromString # old value

或像 "get changelog" docs

中解释的那样使用 GET /rest/api/3/issue/{issueIdOrKey}/changelog

您可以尝试使用 jql 参数进行 REST API 调用。

所以你的呼吁,
JQL = project=XYZ 并且状态已解决
字段 = 键

看起来像这样,
http://example.com/rest/api/2/search?jql=project%3DXYZ%20and%20status%20was%20resolved&fields=key

其中关键将 return 仅提供相关信息,并且对每个问题都不过分。

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 我们可以获取所有转换以设置状态