在Jira中创建报告,显示在状态中花费的时间

时间:2018-02-05 20:14:31

标签: jira jira-rest-api

对于客户,我需要创建月度报告,其中显示问题在不同状态(待办事项,进行中,已关闭等)中花费的时间。更具体地说,客户希望看到,从他们创建问题的时间到我们“采取”​​案例并开始处理它的时间。

我很惊讶地发现你无法在Jiras默认报告工具中得到这个。我搜索了相关的附加组件,但大多数报告工具都非常昂贵,我甚至不确定它们是否提供此功能。这不是一个需要报告的正常指标吗?

然而我找到了David Bevins Jira Rest Client Dot Net api。不幸的是,这个api并没有让我有机会提取相关数据(时间戳,活动等)

所以现在我转向Jiras rest api,我正在尝试在.NET中设置一个程序来实现它。 This guy完全一样。正如你在他的SO问题中所看到的,返回的JSON是一团糟。收集所有正确的数据将需要大量的工作。所以在我走得更远之前,我想知道是否有人之前做过这个以及你是怎么做到的?

感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

Jira默认没有此选项,并且没有简单的方法以编程方式解决它。

但是可以获取此数据(但您必须使用数据库中的3或4个表):

1)创建jira附加组件并在那里解析数据

2)使用主目录浏览器(https://marketplace.atlassian.com/plugins/info.renjithv.jira.plugins.sysadmin.homedirectorybrowser/server/overview)获取数据,然后在自己的程序中解析它

On Atlassian Marketplace是一个完全适用于此功能的插件,它运行良好,有过滤器,时间范围和一些导出选项:

https://marketplace.atlassian.com/plugins/com.obss.plugin.time-in-status/server/overview

您可以免费试用试用版。

答案 1 :(得分:0)

我前段时间创建了一个库,用于从Jira中提取指标: https://bitbucket.org/kaszaq/howfastyouaregoing

据我了解,您正在寻找给定状态下的问题发布周期。我认为此示例应为您提供帮助:

package pl.kaszaq.howfastyouaregoing.examples;

import com.google.common.collect.Sets;
import java.time.LocalDate;
import java.time.Month;
import java.util.HashSet;
import java.util.OptionalDouble;
import java.util.SortedMap;
import pl.kaszaq.howfastyouaregoing.agile.AgileClient;
import pl.kaszaq.howfastyouaregoing.agile.AgileProject;
import static pl.kaszaq.howfastyouaregoing.agile.IssuePredicates.hasSubtasks;
import pl.kaszaq.howfastyouaregoing.cycletime.CycleTimeComputer;

public class CycleTimeExample {

    public static void main(String[] args) {
        AgileClient agileClient = AgileClientProvider.createClient();
        runExample(agileClient);

    }

    private static void runExample(AgileClient agileClient) {
        LocalDate from = LocalDate.of(2011, Month.JULY, 1);
        int daysAverage = 30;
        LocalDate to = LocalDate.of(2014, Month.JANUARY, 1);
        AgileProject agileProject = agileClient.getAgileProject("MYPROJECTID");
        String[] cycleTimeStatuses = {"In Progress", "Ready for Testing"};
        final HashSet<String> finalStatuses = Sets.newHashSet("Closed");

        SortedMap<LocalDate, Double> cycleTime = CycleTimeComputer.calulcateCycleTime(agileProject, hasSubtasks().negate(), finalStatuses, cycleTimeStatuses);

        System.out.println(
                "\tCycle time for issues that do not have sub tasks in hours");
        for (LocalDate k = from; !k.isAfter(to); k = k.plusDays(daysAverage)) {
            OptionalDouble valueOptional = cycleTime.subMap(k.minusDays(daysAverage), k.plusDays(1)).values().stream()
                    .mapToDouble(val -> val)
                    .average();
            if (valueOptional.isPresent()) {
                System.out.println(k + "\t" + valueOptional.getAsDouble());
            }
        }

    }
}
  

https://bitbucket.org/kaszaq/howfastyouaregoing/src/5a2ab64e2304f22b3e82beaf427487f8a8a8e1e7/howfastyouaregoing-examples/src/main/java/pl/kaszaq/howfastyouaregoing/examples/CycleTimeExample.java?at=default&

答案 2 :(得分:0)

Get issue rest api”在您提供 expand=changelog 查询参数后提供历​​史数据。它返回 json 响应,参见 sample reponse。然后您需要解析响应,提取数据并进行计算。

或者您可以尝试为您进行解析和计算的 Marketplace 应用。您可以尝试Status Time app,它是为这个确切需求而开发的。

答案 3 :(得分:0)

Status Time Jira app。它提供有关每种状态所用时间的报告。

将您的工作日历输入应用程序后,它也会考虑您的工作时间表。也就是说,周五下午 5 点开始并周一上午 9 点结束的问题的“进行中”时间将是几个小时而不是 3 天。它有各种其他报告,如受让人时间、状态输入日期、任何领域的平均/总和报告(例如,按项目的平均进度时间,按问题创建月份的平均周期时间)。所有这些也可以作为仪表板上的小工具使用。

这是 online demo link,您可以看到它的实际效果并尝试。

作为免费解决方案,您可以尝试使用受限版本 Status Time Free