项目迭代结束后我们需要把sprint下面的story、task任务状态修改到结束状态,如果手动修改会花费不少时间,本文就介绍如何通过jira api自动修改任务状态,提高工作效率。


一、查看任务工作流

1、想要查看任务工作流首先需要管理员权限,工作流路径:设置--问题--工作流,如下图:

2、点击查看或者编辑,可以通过图形或者文本的方式查看。如下图,我们主要使用文本的方式,这种方式比较容易知道每个工作流动作的ID、状态名称以及与上下节点的关系,这些信息在后面要使用到

二、修改任务代码

1、首先我们来看下jira上任务的体现,开发自测通过后需要开发把任务状态修改到待提测状态,如下图,后面的状态修改有自动化修改。

2、自动化修改后jira体现,如下图。

3、代码如下

 public static void main(String[] args) {
       //模拟调用
updateSpringTaskStatus("2609");
}
/**
* 修改spring下的所有task和story到完成状态
*
* @param springId
*/
public static void updateSpringTaskStatus(String springId) {

//获取spring下面任务
List<String> subTaskKeys = getSubTaskKey(springId);
        //循环修改sub task,状态101=提测预演通过 81=测试通过 41=任务验收完成。这个值就是工作流动作ID
List<Integer> status = Arrays.asList(101, 81, 41);
for (String issueKey : subTaskKeys) {
for (int i = 0; i < status.size(); i++) {
//请求内容
String requestBody = "{\"transition\": {\n \"id\": \"" + status.get(i) + "\"\n }\n}";
//调用接口修改任务状态
httpClient("post", "http://you jira address:port/rest/api/2/issue/" +
  issueKey + "/transitions", requestBody);
}
}
} /**
* 获取sprint下的subTask
* * @return
*/
public static List<String> getSubTaskKey(String sprintId) {

//定义
List<String> issueKeys = new ArrayList<>();
//获取第一页数据,
JSONObject jsonObject = getIssueKey(0, sprintId);
if (jsonObject != null) {
//解析出第一页任务
issueKeys = getSubTaskKey(jsonObject);
//sprint下issue总数
int total = jsonObject.getInt("total");
logger.info("spring上共有story" + total + "个");
if (total > 150) {
//默认一页150条数据,总数大于150计算页数,并循环调用获取数据
int page = total / 150;
if (total % 150 > 0) {
page = page + 1;
}
logger.info("spring上共有story" + page + "页");
for (int pageIndex = 1; pageIndex < page; pageIndex++) {
//调用每页数据
JSONObject object = getIssueKey(pageIndex * 150, sprintId);
if (object != null) {
issueKeys.addAll(getSubTaskKey(object));
}
}
}
}
return issueKeys;
} /**
* 解析出任务key
*
* @param jsonObject
* @return
*/
private static List<String> getSubTaskKey(JSONObject jsonObject) {

List<String> issueKeys = new ArrayList<>();
//获取issues
JSONArray issueArray = jsonObject.getJSONArray("issues");
for (int i = 0; i < issueArray.size(); i++) {
//获取fields
JSONObject issueObject = issueArray.getJSONObject(i);
JSONObject fields = issueObject.getJSONObject("fields");
//获取issuetype
JSONObject issuetype = fields.getJSONObject("issuetype");
if ("Story".equals(issuetype.getString("name"))) {
//如果是story,则获取story下面的subtask任务
JSONArray subtasks = fields.getJSONArray("subtasks");
if (subtasks != null && subtasks.size() > 0) {
for (int taskid = 0; taskid < subtasks.size(); taskid++) {
JSONObject subtask = subtasks.getJSONObject(taskid);
//获取任务字段
JSONObject taskFields = subtask.getJSONObject("fields");
//获取任务状态
JSONObject status = taskFields.getJSONObject("status");
//如果是待提测、任务测试、任务验收状态则返回
if ("待提测".equals(status.getString("name")) ||
  "任务测试".equals(status.getString("name")) ||
  "任务验收".equals(status.getString("name"))) {
issueKeys.add(subtask.getString("key"));
}
}
}
}
}
return issueKeys;
} /**
* 获取spring下的issue
*
* @param startAt
* @param springId
* @return
*/
private static JSONObject getIssueKey(int startAt, String springId) {

    HttpClientResponse issueResponse = httpClient("get", "http://you jira address:port/rest/
agile/1.0/sprint/"+ springId + "/issue?maxResults=150&startAt=" + startAt, "");
if (issueResponse != null && "200".equals(issueResponse.getStateCode())
&& issueResponse.getResponseBody() != null) {

JSONObject jsonObject = JSONObject.fromObject(issueResponse.getResponseBody().toString());
return jsonObject;
}

return null;
    }

  


本文只是介绍如何修改子任务的状态,当然也可以修改story、bug等状态,步骤都是一样的,只是需要修改流程动作ID和issue类型。

更多文章请关注公众号

(五)Jira Api对接:修改任务状态的更多相关文章

  1. (四)Jira Api对接:缺陷分析和任务分析

    迭代进行期间或者结束后,在我们的测试日报或者测试报告中需要体现缺陷详细情况,甚至大家工作效率情况.本文就讨论下如何通过jira api获取缺陷信息并进行分析,同时获取需求子任务情况来了解测试和开发的工 ...

  2. JIRA API 对接

    系统要跟JIRA对接,将本系统数据发送给jira. 开始一头雾水怎么让数据传过去已什么形式存在,是存数据库呢还是怎么显示呢.研究半天发现其实只要将原数据作为json数据提供给jira接口,jira接口 ...

  3. Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探

    Android BLE与终端通信(五)--Google API BLE4.0低功耗蓝牙文档解读之案例初探 算下来很久没有写BLE的博文了,上家的技术都快忘记了,所以赶紧读了一遍Google的API顺便 ...

  4. 动手实现 Redux(一):优雅地修改共享状态

    从这节起我们开始学习 Redux,一种新型的前端“架构模式”.经常和 React.js 一并提出,你要用 React.js 基本都要伴随着 Redux 和 React.js 结合的库 React-re ...

  5. Magento后台手动修改订单状态方法及手动修改方法php

    订单详细内容页手动修改订单状态方法: 打开此文件:app\design\adminhtml\default\default\template\sales\order\view\history.phtm ...

  6. Unity 3D动态修改Shader状态,使物体透明等等

    Unity动态改Shader状态透明 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  7. SM30 客户端 有“不可修改”的状态

    SM30维护自定义数据表时,遇到提示信息,有“不可修改”的状态,无法修改数据. 查询详细信息,有一条:客户端特定对象不能在此客户端中进行更改. 检查了一下自定表设置,发现自定义表之前创建时,Deliv ...

  8. jira以及jira API简单介绍

    最近需要预言:是否可以通过jira API实现用例管理,对jira的应用.API.扩展等进行了一定的了解. Jira介绍: jira是目前比较流行的基于Java架构的管理系统(Atlassian公司支 ...

  9. zencart批量表上传后 标题显示为网址 批量修改标题状态 SEO三要素

    zencart批量表上传后 标题显示为网址,原因是导入批量表时,产品标题对应状态被重置为0导致的 批量修改标题状态 ', metatags_products_name_status ', metata ...

随机推荐

  1. [系统重装日志2]win10系统安装pytorch0.4.1(gpu版本)

    目录 0,资源整理 1,安装最新版的显卡驱动 2,安装visual studio 3,安装cuda 4,安装cudnn,配置环境变量 5,安装pytorch 6,安装torchvision 7,验证 ...

  2. vue+django实现websocket连接

    一.概述 在项目中,需要使用websocket,来展示一些实时信息. 这里使用django 3.1.5 二.django项目 安装模块 pip3 install django-cors-headers ...

  3. .NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决

    前言: 前段时间在对接第三方接口的时候发生了一个非常奇葩的问题,就是使用 .NET Framework 4.6 HttpWebRequest进行网络请求的相关问题.背景,关于调用第三方的接口都是使用使 ...

  4. SpringCloud LoadBalancer灰度策略实现

    如何使用 Spring Cloud 2020 中重磅推荐的负载均衡器 Spring Cloud LoadBalancer (下文简称 SCL),如何扩展负载均衡策略? 你将从本文中获取到答案 快速上手 ...

  5. Python 多线程(一)

    Python多线程(一) 目录 Python多线程(一) 线程 Python线程模型 Python虚拟机按照下面所述方式来切换线程 Threading模块 未引进线程 结果 引入线程 方式一:创建Th ...

  6. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之替换logo-13

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之替换logo-13 欢迎加QQ群:1026880196 进行交流学习 替换 openstack das ...

  7. Tomcat9配置HTTP/2

    1 概述 Tomcat从Tomcat8的一些较新版本就支持HTTP/2了,Tomcat9直接支持,本文首先讲述了相关HTTP/2的特性,接着利用一个简单的开源工具mkcert生成证书并利用该证书配置H ...

  8. WSL2 Ubuntu 图形界面环境搭建(Xfce4 、XServer)

    安装wsl2和Ubuntu 在安装了wsl2后有时候需要传文件到ubuntu上面,比如传一个测试项目什么的.因为wsl里面挂载了本地的磁盘,所以准备安装个图形界面,操作下也挺简单的. 关于wsl2和U ...

  9. Java变量详解(变量定于及语法创建)

    变量的使用定义 变量用于操作系统中,实体之间的传递,把变量看作一个在内存空间中声明的存储位置,在调用变量的时候,系统会自动的调用内存中的存储位置. 在Java中,变量又称为字段,故字段在Java中又有 ...

  10. Java Case Interview

    什么是面向对象? 面向对象和面向过程的区别: 面向过程更注重每一个步骤以及其顺讯,面向对象更注重哪些对象,他们具有哪些能力 面向过程比较直接,而面向对象更易于复用.扩展和维护 三大特性: 封装:内部细 ...