2015-02-05 10 views
0

Я использовал Bugzilla много лет, и одной из моих любимых функций является «система запросов» (http://www.bugzilla.org/features/#rs), также известная как «флаги». Проблема может быть помечена пользователю (?); пользователь может затем принять запрос (+) или отклонить его (-).«Система запросов Bugzilla»: есть ли другие инструменты отслеживания проблем?

Я нахожусь в процессе переоценки наших инструментов отслеживания проблем, и я не могу найти ничего, кроме Bugzilla, у которого есть эта функция.

Так что я интересно:

  • ли любой другой продукт предлагают подобную функциональность?
  • А если нет, то есть ли способ имитировать его (используя метки или настраиваемые поля или что-то еще)?

Ваш совет приветствуется (FYI: В настоящее время я склонен к YouTrack).


Alex V. запросил дополнительную информацию о функциональности системы запросов Bugzilla. Вот пример:

В интерфейсе администратора может быть создан произвольный список флагов. При редактировании вопроса, в котором они перечислены в строке, вот пример:

A sample list of unset flags

Далее, кто-то может установить флаг и попросить катамнестический. Снимок экрана показывает мне (dcherk) установка флага DJiNNInput для [email protected]:

A sample flag requested

Обратите внимание, что тот же флаг может быть запрошен несколько раз (не показан).

Позже [email protected] может действовать на флаге каким-то образом и пометить запрос, как принято:

A sample flag, accepted

В качестве альтернативы, [email protected] может не быть в состоянии принять запрос , В этом случае, он будет отрицать:

A sample flag, denied

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

ответ

0

FYI:

Это то, что мы закончили тем, что делали в YouTrack:

Создано два user[*] поля:

  • Входной запрашивающая (т.е. лицо, запрашивающее вход)
  • Input Запрошенный (т.е. пользователю, чей ввод необходим)

Пользователи всегда могут установить эти поля вручную, но мы также добавили следующие правила рабочего процесса для ускорения процесса:

Правило 1, относится изменения в двух местах:

rule Input Requested 

when Input Requested.changed { 
    if (Input Requested.isEmpty) { 
    Input Requesting.clear; 
    } else { 
    Input Requesting.add(loggedInUser); 
    } 
} 

Правило 2, закрытые вопросы не нужно больше ввода:

rule Clear Input Requests When Issue Becomes Closed 

when State.becomes({Closed}) { 
    Input Requested.clear; 
    Input Requesting.clear; 
} 

Правило 3, @mentioning устанавливает поля; Ответ очищает поля:

rule Input Requested via @mention 

when comments.added.isNotEmpty { 
    var separators = " `!#%^&*()=[]{}:;'\"\\|,<>/?\n\r\t"; 
    var mentionedUsers = ""; 

    var myComment = comments.added.first; 
    var originalText = myComment.text; 
    var text = " " + originalText.lowerCase + " "; 

    var username = ""; 
    var user = loggedInUser; 
    var index = -1; 

    index = text.indexOf("@", opts); 

    while (index != -1) { 
    index = index + 1; 
    username = ""; 

    var nextSymbol = text.substring(index, index + 1); 
    while (!separators.contains(nextSymbol, opts)) { 
     username = username + nextSymbol; 
     index = index + 1; 
     nextSymbol = text.substring(index, index + 1); 
    } 

    if (username.endsWith(".", opts)) { 
     username = username.substringOfLength(username.length - 1, opts); 
    } 

    debug("Extracted @username: |" + username + "|"); 
    if (username.isNotEmpty) { 
     user = project.getUser(username); 

     if (user != null && !mentionedUsers.contains("@" + user.login + ",", ignoreCase) && (user.isInGroup(permittedGroup.name) || permittedGroup == null || user == reporter) && (myComment.permittedGroup == null || user.isInGroup(myComment.permittedGroup.name))) { 

     if (Input Requesting.contains(user)) { 
      Input Requested.remove(loggedInUser); 
      if (Input Requested.isEmpty) { 
      Input Requesting.clear; 
      } 
     } else { 
      Input Requested.add(user); 
      Input Requesting.add(loggedInUser); 
     } 

     mentionedUsers = mentionedUsers + "@" + user.login + ","; 
     } 
    } 

    text = text.substringRelative("@" + username, pos: after); 
    index = text.indexOf("@", opts); 
    } 
} 

Надежда, что помогает любому пути.

0

В YouTrack нет такой функциональности. Однако, что вы можете сделать, вы можете запустить проблему для пользователя, как если бы пользователь сделал это самостоятельно. Затем они получат уведомление об этом и могут либо оставить звезду по проблеме, либо удалить ее. Не знаю точно, как эти флаги работают в Bugzilla, так что это, вероятно, не полная замена этой функции. Если вы подробно расскажете о желаемом поведении, я дам вам знать, как (если возможно) полностью имитировать его.

+0

Я обновил вопрос на примере. См. Выше. –

+0

Хорошо, если я получу все это правильно, вы можете имитировать эти флаги в YouTrack следующим образом. (Я надеюсь, что у вас есть один флаг. Если их много, шаги могут потребоваться повторить для каждого из них, но это зависит от ваших процессов). * Добавить поле типа Пользователь в свой проект. Поле будет представлять пользователя, которому назначен флаг. * Добавить поле типа состояния. Он будет содержать статус флага (начальный/принятый/отклоненный). * Добавьте рабочий процесс, который позволит только пользователю из первого поля изменить второй. –

+0

Это отличная идея. Я попробую это в нашей песочнице, –

 Смежные вопросы

  • Нет связанных вопросов^_^