Программируем процессы в Redmine


Всенародная любовь с системе Redmine хорошо известна. Люди любят систему за простоту, надежность, многофункциональность. Мы тоже давно внедряем ее для автоматизации различных бизнес-процессов.

Но как у любой системы у Redmine тоже есть недостатки, к примеру, в базовой системе нет возможности программировать процессы. Сегодня я расскажу как обойти это ограничение, что позволит легко и быстро организовать полноценный, быстрый и удобный документооборот.

1) Для начала нам понадобится плагин Якова Анникова Computed custom field;
2) Плагин добавляет вычисляемое поле в диалоге редактирования настраиваемых полей (вот теперь смотрите на рисунок);
3) Остается написать скрипт на Ruby и поместить его в поле «Формула»;
4) При этом доступные кастомные поля можно выбирать из диалога, а штатные переменные посмотреть в документации (кстати они же используются и в Redmine API);
5) Все. Программирование процедуры завершено.

Теперь вкусняшки:

1) При сохранении поля, Redmine правильным образом возвращает ошибки компиляции — это очень удобно.
2) А вот пример простейшего кода, который автоматически делегируется задачи, для которых пользователь забыл уставить значение в поле «Назначена» (и сообщает об этом в поле «Описание»).

if (self.assigned_to_id.blank?) # Поле «Назначено» не заполнено
if (self.status_id == 1) # Статус == «Новая»
self.assigned_to_id = 112 # ID for МБК. Отдел техподдержки
self.due_date = start_date + 2
self.description = self.description + + «\r\n — \r\n» + «Redmine: Пользователь не назначил задачу никому. Выполнено автоматическое назначение задачи на техническую поддержку»
end
end