Custom Select List — процесс согласования 1.


Jira Custom Select List
Jira Custom Select List

Проблема следующая

В Jira нужны процессы, которые требуют согласований конкретных пользователей.

Эти согласования отличаются в зависимости от отдела или документа.

Например заявку на отпуск согласуют руководитель сотрудника и отдел кадров.

Нужен механизм согласования в Jira, который легко изменяется и настраивается.

В процессах могут встречаться разные нюансы. Приложенные файлы или поля не должны меняться после определенного этапа согласования. Если согласующий в отпуске, то нужно согласование заместителя. В этом посте нюансы опустим для простоты. Код будет написан на Groovy для плагина MyGroovy.

Итак, исходные данные

Документ который требует согласования — document 1.

Цепочка согласования состоит из 3-х этапов.

C начала согласует user1(логин пользователя) как руководитель выбранного отдела — step1.

После него user2 или user3 от  финанового отдела компании — step2.

Потом user4 от бухгалтерии — step3.

Решение

Связку документ и его цепочка согласований будем хранить в Custom Select List.

В «value» название документа для согласования.

В «data» цепочку по которой согласуется документ. 

Хранить цепочку для простоты будем в json формате. 

В Jira для пользователя процесс будет выглядеть следующим образом.

Процесс согласования происходит в одном статусе, у пользователя будут только кнопки «Согласовать» и «Отказать».

Когда все согласования пройдены задача (issue) автоматически меняет статус на следующий.

Потребуются три  поля в которых будет храниться информация о согласовании:

 1) Текущий шаг — Text Field (single line)

 2) Чье согласование требуется на текущем шаге — User Picker (multiple users)

 3) Чье согласование получено  — User Picker (multiple users)

Еще потребуется функция в бизнес-процессе (post-function) которая будет проставлять согласования в соответствии с цепочкой.

И условие (condition) которое будет управлять доступами к кнопкам согласовать и отказать.

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

Цепочка согласований

Из исходных данных делаем вот такой json для цепочки согласования. 

{
    "steps": [{
            "name": "step1",
            "approvers": ["user1"]
        },
        {
            "name": "step2",
            "approvers": ["user2", "user3"]
        },
        {
            "name": "step3",
            "approvers": ["user4"]
        },
        {
            "name": "done"
        }
    ]
}

Его мы помещаем в поле «Data» нашего Custom Select List поля.

Теперь у нас есть цепочка согласований для document 1.

Workflow

Весь процесс согласования будет проходить в статусе «To Do». Когда все согласования буду получены задача должна будет перейти в статус «In progress».

Post-function

Начнем с функции которая будет находиться на кнопке согласовать(Ok).

Проверки, логирование и перехват исключений опущены для наглядности кода.

Condition

Проверяем что пользователь среди находится среди пользователей которые должны согласовать на данном шаге.

В «In progress» можем перейти только после получения всех согласований.

Это обеспечит следующее условие.

Для очистки полей при отказе (Cancel) можно использовать код или готовые функции других плагинов.

Устанавливаем наши функции в бизнес-процесс.

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


Like it? Share with your friends!

558
558 points
a.chuiko

Comments

comments

Powered by Facebook Comments