Время прочтения: 5 мин.

Эта система, позволяет нам создавать задачи, назначать исполнителей, устанавливать приоритеты и отслеживать выполнение этих задач в онлайн режиме с помощью уведомлений.

Основные постулаты в JIRA — это проекты с задачами.

Проекты состоят из задач, которым присваиваются как создаваемые, так и встроенные типы (инициатива, задание, улучшение). Каждой задаче назначается автор и исполнитель. В задачах определенного типа создаются необходимые наборы полей. В ходе выполнения задач их статус меняется. Большинство задач имеют связи с другими задачами и имеют отдельные подзадачи. Задачи объединяются в проекты. Для своего проекта мы настроили требуемый вид рабочего стола (Kanban доску), на котором в нужном порядке располагаются задачи с определенным статусом.

На определенном этапе времени задачи получают нужный статус. Для каждого типа задач созданы индивидуальные схемы движения. Двигаясь по созданной схеме (нажимая кнопку определенного действия) задачи меняют статус. Задачи не могут быть перемещены в обход/в нарушение настроенной схемы.

Формализованное описание последовательности этапов выполнения задач есть правила бизнес-процессов, принятых в организации. За контроль этих правил в JIRA отвечает объект «рабочий процесс» (Workflow – поток работ).

 Исполнители и заинтересованные пользователи по электронной почте информируются о действиях с заданиями (добавление комментариев, изменение статуса, изменение описания, замена исполнителей и т.д.). В JIRA администратор проекта настраивает схему уведомлений (т.е. кого и о чем уведомлять).

Объединяя пользователей в группы и назначая им роли эффективно контролируются их доступы к задачам, функциям и проектам. В Jira большой стандартный набор ролей, мы использовали три из них — это роли сотрудника, работающего над задачей, руководителя проекта и администратора.

JIRA позволяет по разным критериям (меткам) и полям отыскивать задачи, настраивать фильтры, сохранить и делать их общедоступными.

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

Хотя и в самой JIRA есть инструменты для построения отчетности, нами на портале PowerBI разработан проект Dashboard — единая площадка для формирования отчетности в автоматизированном режиме по всем активностям в JIRA.  Использование внешних отчетов в PowerBI связано с более гибкой и наглядной формой представления, разработанной под задачи службы.

Рассмотрим подробнее разработанный для передачи данных из Jira в PowerBI специальный Python-скрипт. Данная программа периодически обращается к API Jira, производит первичный анализ и обработку данных, после чего формирует xlsx-файл для дальнейшей работы в PowerBI.

Для работы скрипта укажем зависимости:

import pandas as pd
from jira import JIRA

Подключаемся к Jira. Для этого необходимо знать адрес сервера, сертификат,  логин и пароль пользователя:

jira_options = {
    'server': server_addr,
    'verify': False,
    'cert'  : server_sert
}
jira = JIRA(options = jira_options, basic_auth=(jira_user_login, jira_user_path))

Для получения данных используется специальный язык JQL, который мы не будем рассматривать. Просто составим простейший запрос, в котором укажем, с каким проектом работаем и получим список объектов issue:

jql = 'project = ' + project_name
issues_list = jira.search_issues(jql, maxResults=False, 
    fields = '*all', expand = 'changelog')

Параметер maxResults отвечает за максимальное количество объектов issue, которые вернет функция, значение False говорит о том, что ограничения нет. Аргумент fields = ‘*all указывает, что нам нужны все поля каждой issue. Параметр expand отвечает за дополнительную информацию о задачах. В данном примере мы получим историю изменений.

У каждого объекта issue есть набор основных полей, таких как key или id и дополнительных, которые находятся в свойстве fields:

type_of_issue =  issue.fields.issuetype.name

Так же существуют кастомные поля (custom_fields). Для того, чтобы определить название каждого поля можно выполнить следующий скрипт после подключения к Jira:

df = pd.DataFrame(jira.fields()).to_excel(file_name, index=True)

Таким образом, в указанном xlsx-файле у нас появится список полной информации о полях в Jira.

Для работы с xlsx-файлами используется библиотека pandas. Сформируем простейший DataFrame с данными из Jira:

df = pd.DataFrame (columns = ['ID', 'IssueID','Type', 'Closedate'])

i = 0
for issue in issues_list:
    df.loc[i] = {
        'ID'        : issue.key, 
        'IssueID'   : issue.id, 
        'Type'      : issue.fields.issuetype.name, 
        'Closedate' : issue.fields.customfield_12311
    }
    i += 1

df.to_excel(‘file_name.xlsx’)

Таким образом мы получаем xlsx – файл с указанными данными:

Т.к. JIRA сохраняет не только когда и какие изменения были сделаны с задачами, но и кто их сделал, рассмотрим подробнее работу с историей изменений:

for history in issue.changelog.histories :
    for item in history.items() :
        print('Change date: ' + history.created)
        print('Changed field: ' + item.field)
        print('Old value: ' + item.fromString)
        print('New value: ' + item.toString)

Каждый объект history соответствует изменению в конкретный момент времени. Так как за раз можно поменять несколько полей, каждый history хранит список items, элементы которого содержат полную информацию об изменении поля. 

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