通过JIRA REST API访问转换历史
我发现另一个人显然有这个问题,但我想我应该重新问这个问题,看看是否可以把它说得更清楚 我正在使用JIRA 6 REST web API,并成功地获取了大量与我们的web云UI匹配的数据 现在我想看看一个给定问题已经完成的转换,最好是关于谁执行了转换的信息 我可以在我们的JIRA web UI中看到这种转换历史,但我还没有弄清楚如何以编程方式访问 有一个很有前景的API: {issuedWorkey}/transitions[GET,POST] 这就是前一个询问者似乎一直在使用的API。据我所知,它只返回在给定时间点您可以要求的关于问题的有效转换 我想要一个转换的历史记录,比如当问题进入代码审查、QA、关闭等阶段时 我已经做了一个expand=changelog,但是更改日志与我所看到的转换不相关通过JIRA REST API访问转换历史,jira,jira-rest-api,Jira,Jira Rest Api,我发现另一个人显然有这个问题,但我想我应该重新问这个问题,看看是否可以把它说得更清楚 我正在使用JIRA 6 REST web API,并成功地获取了大量与我们的web云UI匹配的数据 现在我想看看一个给定问题已经完成的转换,最好是关于谁执行了转换的信息 我可以在我们的JIRA web UI中看到这种转换历史,但我还没有弄清楚如何以编程方式访问 有一个很有前景的API: {issuedWorkey}/transitions[GET,POST] 这就是前一个询问者似乎一直在使用的API。据我所知,
任何提示都将不胜感激。谢谢。当您使用
expand=changelog
时,问题中所做的所有更改都在那里。在web浏览器中查看时,与“活动”部分的“所有”选项卡中的信息完全相同
当我发送:
http://jira.my.server.se/rest/api/2/issue/KEYF-42346?expand=changelog
在changelog
键下,我找到历史记录列表。每个历史记录都有项目列表。这些项目是对特定字段执行的更改,包括“到”和“从”值
要查找所有状态更改,您需要执行以下操作:
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/{issueidworkey}/changelog
如中所述,您可以尝试使用jql参数进行rest api调用
所以你的电话是,
JQL=project=XYZ,状态已解决
字段=键
将看起来像这样,
其中,key将只返回相关信息,而不会针对每个问题返回过多的信息。公共作废更改状态(IssueRestClient-iRestClient,
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;
}
}
}
列表jirastatus,字符串键){
String status=“待办事项”;
用于(状态状态:VonetojiraStatus){
如果(1==状态。比较到(状态)){
试一试{
字符串_transition=status.getTransition();
Issue-Issue=iRestClient.getIssue(key.get();
转换=getTransition(iRestClient,问题,
_过渡期);
如果(!(isBlankOrNull(转换))){
如果(!(issue.getStatus().getName())
.equalsIgnoreCase(_转换)))
转换(转换、问题、空、iRestClient、,
地位);
}
}捕获(例外e){
常量.ERROR.info(Level.info,e);
}
打破
}
}
}
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;
}
私有无效转换(转换转换、发布、,
FieldInput FieldInput,IssueRestClient,IssueRestClient,
字符串状态)引发异常{
if(isBlankOrNull(字段输入)){
TransitionInput TransitionInput=新的TransitionInput(
transition.getId());
transition(issue,transitionInput).claim();
Constants.REPORT.info(“状态更新为:+issue.getKey());
}否则{
TransitionInput TransitionInput=新的TransitionInput(
transition.getId());
transition(issue,transitionInput).claim();
Constants.REPORT.info(“状态更新为:+issue.getKey());
}
}
公共转换getTransition(IssueRestClient IssueRestClient,
问题,字符串(转换){
Promise ptransitions=发行人最新客户机
.getTransitions(发行版);
Iterable transitions=ptransions.claim();
用于(转换:转换){
if(transition.getName().equalsIgnoreCase(_transition)){
回归过渡;
}
}
返回null;
}
简言之,使用JIRA的转换API,我们可以获取设置状态的所有转换谢谢。我无法枚举内部项,因此缺少一些状态。如何将更改日志缩小为仅状态转换历史记录,而不是对问题所做的所有更改?