Сьогоднішня стаття буде про повідомлення про зміни в завданнях Redmine. Про те, які кошти є в коробковому Redmine і про те, що ми допрацювали самі.
Будь-який task-трекер має засоби повідомлення про зміни в завданнях, і Redmine - не виняток.
Електронна пошта
Коробковий Redmine може повідомляти користувачів про зміни в завданнях електронною поштою. Досить стандартна функціональність, але опцій з її кастомізації не дуже багато.
Досить просто розширювати опції, але, як нам здалося, повідомлення за допомогою листа - не найкращий варіант повідомити про те, що в завданні щось змінилося. З часом, ти просто перестаєш звертати будь-яку увагу на всі листи, що валяться до тебе в скриньку, асоціюючи їх зі спамом.
До речі, у повідомлень електронною поштою в Redmine є ще один фатальний недолік. Redmine не віддає сторінку із завданням поки не відправить лист на сервер і, якщо з поштовим сервером відбувається щось погане, то сторінка із завданням не віддається користувачеві досить довго (до 15 секунд).
Автор статті витратив не мало часу, аналізуючи проблему довгого відкриття сторінки із завданнями, і як виявилося адміністратори мережі поміняли налаштування поштового сервера.
RSS
Майже на всі списки завдань, коментарі до завдань і т. д. можна завести RSS -feed і використовувати його в RSS-рідерах мобільних телефонів, наприклад. Досить зручний спосіб, яким навіть IT-ки користуються рідко.
Моя сторінка
Стандартна «Моя сторінка» дозволяє вивести лімітований, навмисний і вшитий в код програмного продукту, набір блоків. Навмисного набору блоків практично відразу починає не вистачати. Крім іншого, є ще одна глобальна проблема зі списком завдань, які відображаються в блоці на моїй сторінці - немає ніякого повідомлення про те, що змінюється всередині завдання.
Що зробили ми, щоб оперативно інформувати користувачів про зміни в завданнях.
Гуртки-індикатори
Ми придумали і реалізували сині, світло-зелені і темно-зелені гуртки. Що вони означають!?
- Зелений кружечок поруч із завданням означає те, що ви ніколи не читали це завдання.
- Синій кружечок означає те, що ви читали завдання, але з моменту останнього прочитання в завданні щось змінилося і, можливо, користувачеві необхідно ознайомитися зі змінами.
- Темно-зелений кружечок з циферкою всередині означає те, що на вас призначено n-шу кількість завдань і в них нічого не змінювалося з моменту останнього прочитання.
- Аналогічне значення мають світло-зелені та сині гурточки з лічильником всередині.
Гуртки моментально прижилися в компанії і стали ненав'язливим і в той же час інформативним засобом повідомлення користувачів про зміни в завданнях.
Ми оформили цю функціональність у вигляді окремого плагіну - «Unread issues», і з радістю ділимося ним зі спільнотою.
Крім гуртків-індикаторів, які додаються в усі списки завдань, плагін також дозволяє визначити запит завдань, на основі якого будуть рахуватися індикатори-лічильники для моєї сторінки. Це дуже зручно, якщо користувачів, наприклад, не потрібно повідомляти про зміни в певних трекерах.
Гуртки індикатори для інших сутностей і проблеми з продуктивністю.
Гуртки-індикатори так добре прижилися, що ми відразу стали використовувати їх для інших сутностей:
- Кількість непрочитаних документів,
- Кількості регламентних дій, які необхідно виконати співробітнику. Наприклад, кількість заявок для узгодження, кількість оцінок, які необхідно проставити співробітникам тощо.
Оскільки лічильники відображалися в головному меню і перераховувалися практично при кожному оновленні сторінки, а SQL - запити щодо їх обчислення бували складними, Redmine пригальмовував.
З часом з'явився плагін «Ajax counter», який дозволяє обчислювати і відображати лічильники асинхронно. Це дозволяє користувачам отримувати сторінку ще до обчислення всіх лічильників.
Цей же плагін дозволяє встановлювати інтервал оновлення лічильника, щоб значення для нього не перераховувалося щоразу при оновленні сторінки. Так наприклад, для регламентної дії «Ознайомитися з наказами» можна поставити інтервал в 1 годину, оскільки нові накази виходять рідко.
Плагін «Ajax counter» знаходиться у вільному доступі тут: bitbucket.org/dkuk/ajax_counters. Думаю, що він може бути корисний програмістам, які розробляють під Redmine.
Блок «Що мені потрібно зробити?»
Ми використовуємо Redmine як єдине корпоративне середовище. І в цьому середовищі, співробітники часто забивають, а іноді і просто бойкотую обов'язок виконувати регламентні процедури.
Ну, наприклад, є правило, яке свідчить, що співробітник зобов'язаний ознайомлюватися зі змінами в завданнях, призначених на нього, протягом трьох днів. І хтось не робить цього регулярно, пояснюючи свої дії незручністю програми і незрозумілістю інтерфейсу.
Тому, з'явився чудовий блок на моїй сторінці «Що мені потрібно зробити?», в якому популярно розписано, що співробітник повинен зробити сьогодні, в найближчі сім днів, в поточному місяці, а за одне і те, що повинні зробити його підлеглі.
Блок «Що мені потрібно зробити?» чудово зменшує вхідний поріг для роботи в системі.
Дії для блоку можуть задаватися в сторонніх плагінах. Наприклад, плагін «KPI» визначає свій список дій для блоку: узгодження авансу, закриття ЗП тощо.
Також, дії для блоку можуть задаватися на основі стандартних запитів завдань Redmine. Ви можете вибрати якийсь запит і визначити в ньому поле з датою, за яким буде рахуватися термін необхідного виконання завдання. Цей підхід дає велику гнучкість, оскільки перетворює будь-який запит завдань на регламентну дію. Наприклад, легко створити регламентні дії виду: «Перевірити завдання», «Дати зворотний зв'язок за завданнями» тощо.
Гуртки-індикатори і блок «Що мені потрібно робити?» перекривають потреби співробітників в інформування про зміни.
Трохи раніше у нас були повідомлення за протоколом XMPP в jabber-клієнт, але потреба в них з часом відпала. До того ж, повідомлення виду «У завданні такої-то відбулися зміни», що постійно сиплються, дуже швидко дістають користувача.
Сподіваюся, стаття буде корисна. Пробуйте наш плагін «Unread issues». Будь-який зворотний зв'язок вітається!
