通过 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 /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 我们可以获取所有转换以设置状态
我发现另一个人显然有这个问题,但我想我会重新提出这个问题,看看是否可以更明确。
我正在使用 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 /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 我们可以获取所有转换以设置状态