FAQ: как нумеровать задачи отдельно для каждого проекта

Обсуждаем TrackStudio по-русски

FAQ: как нумеровать задачи отдельно для каждого проекта

Postby admin » Tue Oct 02, 2007 12:01 am

Периодически клиенты нам присылают вот такой вопрос:
===
Нам необходима возможность ведения уникальной(в разрезе проекта), неразрывной нумерации задач. По такому номеру можно определить Код Проекта и Номер задачи. Например: номер NKT-031 означает 31 задачу по проекту NKT. Так же необходимо, что бы номер задачи автоматически увеличивался при заведении новой задачи (автоинкримент). Возможно ли это сделать путем добавления Custom Field и написание некоего кода на нем? Или есть какие-то другие пути?
===

В TrackStudio используется сквозная нумерация задач. Это было сделано специально, т.к. иначе ссылки на задачу (из SVN, например) становились бы невалидными после переноса задачи в другой проект. Однако можно создать дополнительный номер задачи (в виде кастом поля задачи), в кастом поле проекта хранить последний выданный номер и управлять этими полями при помощи триггера. О там как это сделать рассказано ниже.

Создайте BEFORE Триггер. Для этого перейдите в раздел Скрипты и
выберите тип скрипта "Trigger / Create Task / BEFORE Trigger".
На странице редактирования скрипта вставьте нижеприведенный код триггера.

Создайте процесс "Версия" (все названия можете выбирать по своему
усмотрению), в нем задайте кастом-поле "Последний номер", для которого задайте разрешения для необходимых групп пользователей.

Создайте категорию "Версия", которая работает на процессе "Версия" (не забудьте задать Отношения для категорий, для которых "Версия" будет подкатегорией). Задайте разрешения для необходимых групп
пользователей.

Аналогичным образом создайте категорию для вашего уже созданного
процесса "Контроль ошибок". В разделе Триггеры выберите ранее
созданный BEFORE Триггер.

В итоге при создании новой задачи будет браться значение из
кастом-поля "Последний номер" категории "Версия" и записываться
в кастом поле "Номер" для процесса "Контроль ошибок", затем значение увеличивается на единицу. Для новой задачи уже будет браться значение, увеличенное на единицу.

Вот скрипт:
Code: Select all
if (task.getParentId()!=null) {
    String numberStr = AdapterManager.getInstance()
                        .getSecuredUDFAdapterManager()
                        .getTaskUDFValue(
                             task.getSecure(),
                             task.getParent().getId(),
                             "Последний номер");

    task.setUdfValue("Номер", numberStr);
    int number = Integer.valueOf(numberStr);
    number++;

    AdapterManager.getInstance()
                  .getSecuredUDFAdapterManager()
                  .setTaskUDFValueSimple(
                       task.getSecure(),
                       task.getParent().getId(),
                       "Последний номер",
                       Integer.toString(number));
}

return task;
Maxim Kramarenko (mailto: maximkr@trackstudio.com)
TrackStudio - Hierarchical Bug & Issue Tracking Software
http://www.trackstudio.com
admin
Site Admin
 
Posts: 8148
Joined: Thu Jan 01, 1970 3:00 am
Location: Smolensk, Russia

Return to TrackStudio Support [Russian]

Who is online

Users browsing this forum: No registered users and 11 guests

cron