Подписки на задачи

20 февраля ‘15

Несколько лет назад в directCRM была добавлена нотификация пользователей о создаваемых ими задачах. Например, отправляете вы рассылку потребителям, а вам приходят письма — рассылка поставлена в очередь, рассылка завершена. Или ставите задачу импорта потребителей, а в письме — импорт был почти успешным, не обработалось 99 строк из 100.

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

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

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

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

Как всё это выглядит лучше показать на примере.

Допустим, я хочу подписаться на все события, связанные с импортом потребителей. Для этого в фильтре я выбираю тип массовой операции «Стандартный импорт (добавляем новых)»:

Стандартный импорт (добавляем новых)

После этого в блоке Действия вызываю специальный попап:

Попап

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

Хочу подписаться на все события

Однако часто надо следить только за задачами, завершенными с ошибками (теми самыми, где не обработано 99 строк из 100 или которые просто поломались совсем), для этого в списке необходимо выбрать событие «Ошибка в задаче»

Ошибка в задаче

Можно выбирать несколько событий одновременно:

Можно выбирать несколько событий одновременно

События задач, на которые можно подписаться:

  • БД недоступна длительное время (больше 10 незапусков задачи подряд) — например, сложный триггер пытается запуститься несколько раз подряд и не может.
  • Долгая приостановка задачи (больше 1 дня) — кто-то приостановил задачу и забыл про это.
  • Долгое выполнение задачи (больше 30 минут) — сложное условие задачи, одна транзакция больше 30 минут, это непорядок
  • Задача завершена
  • Задача запущена
  • Задача отменена
  • Задача приостановлена
  • Ошибка в задаче — когда есть ошибки валидации и/или когда задача решила помереть в процессе выполнения.

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

Все подписки отображаются на странице «Мои подписки», которая доступна с быстрого старта и около граватарки:

Мои подписки
Мои подписки

Сама страница подписок:

Сама страница подписок

Везде, где раньше можно было подписываться, кликнув по переключателю (кампании и задачи) эта возможность сохранилась:

Возможность подписаться или отписаться
Возможность подписаться или отписаться

При создании задачи, как и раньше, автор подписывается на все события, кроме события создания (незачем слать дополнительное письмо, автор и так знает, что он задачу создал).

Подписка на остатки призов также интегрирована в общую систему:

Подписка на остатки призов
Подписка на остатки призов

Внешний вид нотификационного письма остался неизменным:

Внешний вид нотификационного письма

Не всё получилось, как мы хотели изначально (например, уже есть идеи, как доработать страницу подписок), но система работает и нотифицирует третьих лиц об ошибках в задачах — чего мы, собственно, и добивались в первом релизе.

Требуйте новую систему подписок на своем проекте у наших менеджеров!