2015-05-10 3 views
2

Я нашел другого человека, который, по-видимому, имел эту проблему, но я думал, что снова задал вопрос, могу ли я сделать его более явным.Доступ к истории перехода через API-интерфейс JIRA

Я использую веб-API JIRA 6 REST и успешно извлекаю множество данных, соответствующих нашему пользовательскому интерфейсу веб-облаков.

Теперь я хотел бы видеть переходы, которые были заданы по данной проблеме, желательно с информацией о том, кто выполнил переход.

Я вижу эту историю перехода в нашем пользовательском интерфейсе JIRA, но я еще не понял, как получить доступ к программному обеспечению.

Там многообещающее звучащий API:

http://example.com:8080/jira/rest/api/2/issue/ {issueIdOrKey}/переходы [GET, POST]

И это API, казалось предыдущий спрашивающий, был использованием. Из того, что я могу сказать, он возвращает только действительные переходы, которые вы можете задать по проблеме в данный момент времени.

Я хотел бы историю переходов, например, когда речь пошла к проверке кода, контроль качества, закрыт и т.д.

Я сделал расширения = изменений, но журнал изменений не коррелируют с переходами, которые Я вижу.

Любые советы будут оценены. Благодарю.

ответ

4

Когда вы используете expand=changelog, тогда все изменения, которые были сделаны в вопросе, есть. Точно такая же информация, как и во вкладке «Все» в разделе «Активность» при просмотре в веб-браузере.

Когда я посылаю:

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 
+0

Спасибо. Я не смог перечислить внутренние элементы, поэтому мне не хватало какого-то статуса. –

0

Вы можете попробовать использовать jql параметр для вызова REST API.

Так что ваш призыв,
JQL = проект = XYZ и статус был решен
поля = ключ

будет выглядеть так,
http://example.com/rest/api/2/search?jql=project%3DXYZ%20and%20status%20was%20resolved&fields=key

где ключ будет возвращать только релевантную информацию и не является чрезмерным для каждой проблемы.

1
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; 
     } 
    } 

} 

Список представляет собой реализацию 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; 
} 

В Шорт с помощью перехода API из JIRA мы можем извлечь все переходы, чтобы установить статусы