Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JIRA REST API访问转换历史_Jira_Jira Rest Api - Fatal编程技术网

通过JIRA REST API访问转换历史

通过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。据我所知,

我发现另一个人显然有这个问题,但我想我应该重新问这个问题,看看是否可以把它说得更清楚

我正在使用JIRA 6 REST web API,并成功地获取了大量与我们的web云UI匹配的数据

现在我想看看一个给定问题已经完成的转换,最好是关于谁执行了转换的信息

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

有一个很有前景的API:

{issuedWorkey}/transitions[GET,POST]

这就是前一个询问者似乎一直在使用的API。据我所知,它只返回在给定时间点您可以要求的关于问题的有效转换

我想要一个转换的历史记录,比如当问题进入代码审查、QA、关闭等阶段时

我已经做了一个expand=changelog,但是更改日志与我所看到的转换不相关


任何提示都将不胜感激。谢谢。

当您使用
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,我们可以获取设置状态的所有转换

谢谢。我无法枚举内部项,因此缺少一些状态。如何将更改日志缩小为仅状态转换历史记录,而不是对问题所做的所有更改?