Продолжаем улучшать быт системного администратора своими силами.

Часто бывает, что список активных задач в Redmine достаточно огромен. Однако, среди них есть много тех, которые невозможно выполнить в данный момент: либо ждем ответа клиента, либо выполнить можно только в согласованную дату и подобное.

С одной стороны, такие задачи можно перевести в статус «Заморожена», например. Они перестанут захламлять список актуальных задач, с одной стороны. С другой — появляется риск про них забыть. С целью не допустить подобного и был создан плагин redmine_issue_open_date.

Установка и настройка.


Клонируем плагин из репозитория в папку с плагинами:

git clone https://github.com/centosadmin/redmine_issue_open_date /opt/redmine/plugins

Затем выполняем миграцию:

bundle exec rake redmine:plugins:migrate

И добававляем задачу в крон:

bundle exec whenever -i redmine_issue_open_date -f plugins/redmine_issue_open_date/config/schedule.rb

Если хотим отключить выполнение задачи, выполняем команду:

bundle exec whenever -c redmine_issue_open_date -f plugins/redmine_issue_open_date/config/schedule.rb

В настройках плагина можно определить какой статус определяет, что задача «Заморожена», а какой «Открыта».

image

После установки плагина, у нас в разделе параметров при обновлении задачи если поменять статус на тот, который соответствует «Заморожена», появляется поле «Открыть заново» с возможностью выбора даты.

image

Как это работает.


Все просто. В 00:01 текущего дня выполнится:

rake issue_open_date:switch

При этом, происходит выборка всех задач со статусом, соответствующим «Заморожена», дата открытия которых установлена на текущий день.

Для каждой подходящей по критерию задачи будет выставлен статус, соответствующий «Открыта».

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

Спасибо за внимание!

Комментарии (5)


  1. Loriowar
    08.12.2015 13:41

    А на основной сайт Redmine почему не выкладываете плагины?
    Не описано можно ли искать по новому полю и если можно, то почему в дефолтной миграции на это поле не навешен индекс? Да и вообще, расширять таблицу issues ради такого… я бы не поставил. Угораздит Вас расшрять плагин и раздуете ещё больше и так перегруженную таблицу.


    1. akhaustov
      08.12.2015 14:56

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


      1. Loriowar
        08.12.2015 17:45

        Хуже становится, когда после десятка плагинов таблицу разрывает в 2 раза, ибо каждый по 1-2 поля туда вмерживает.
        А по поводу автоматического открытия, тут всё как обычно, крон — самый базовый и топорный вариант, кто-то прибежит и delayed_job запросит или rescue_scheduler потому что «ох как нужно видеть в реалтайме что запланировано, что отработало и где там с ошибками завалилось».
        Вообще такой функционал больше видится как модуль оповещений/уведомлений, а не «внезапного» переключение статуса задач, но это личное мнение.


  1. leotsarev
    08.12.2015 18:02
    +2

    Все просто. В 00:01 текущего дня выполнится:

    Зря вы это. В смысле, что не надо запускать джобы в полночь, если вы не знаете, что еще на системе будет помимо вас.
    Назначьте время типа 03:44


  1. sshz
    08.12.2015 20:54

    Есть вариант попроще, но без плагинов, мы пользуемся — работает.

    Просто ставим у задач которые нельзя выполнить сейчас дату начала (поле «Начата») нужную дату в будущем. То есть — можно выполнить только на следующей неделе — ставим дату начала задачи следующий понедельник.

    После этого настраиваем все используемые списки задач таким образом, чтобы не начатые задачи не отображались в списках. В фильтрах это называется — Начата более чем 0 дней назад.

    Всё, теперь задачи по которым работать ещё нельзя не будут отображаться.