Несколько лет назад в directCRM была добавлена нотификация пользователей о создаваемых ими задачах. Например, отправляете вы рассылку потребителям, а вам приходят письма — рассылка поставлена в очередь, рассылка завершена.
20 февраля 2015
Подписки на задачи
Несколько лет назад в directCRM была добавлена нотификация пользователей о создаваемых ими задачах. Например, отправляете вы рассылку потребителям, а вам приходят письма — рассылка поставлена в очередь, рассылка завершена. Или ставите задачу импорта потребителей, а в письме — импорт был почти успешным, не обработалось 99 строк из 100.
Все было хорошо, до тех пор, пока не возникла потребность отслеживать ошибки в задачах, заведенных другими пользователями.
Простое условие после обсуждения вылилось в серьезную доработку, и в итоге у нас появилась достаточно мощная система подписок.
Подписка теперь происходит по фильтру (т. е. можно собрать фильтр любой сложности — на эти задачи хочу подписываться, на те не хочу и пр.) и использует систему событий.
В частности, это означает то, что если в будущем появится задача, подходящая под ранее созданный фильтр, то подписчик будет также на нее подписан.
Как всё это выглядит лучше показать на примере.
Допустим, я хочу подписаться на все события, связанные с импортом потребителей. Для этого в фильтре я выбираю тип массовой операции «Стандартный импорт (добавляем новых)»:
![Стандартный импорт (добавляем новых) Стандартный импорт (добавляем новых)](https://image.mindbox.ru/draw/c24ecce8-dc7f-4b2a-84e7-551877f47085.png/-/size/1600/webp/1)
После этого в блоке Действия вызываю специальный попап:
![Попап Попап](https://image.mindbox.ru/draw/a11a6e99-5f60-47b5-af73-7ee94f9d8ecf.png/-/size/1600/webp/1)
и явно отмечаю, что хочу подписаться на все события:
![Хочу подписаться на все события Хочу подписаться на все события](https://image.mindbox.ru/draw/e94205ea-07ab-49cf-a8df-30387181e5e9.png/-/size/1600/webp/1)
Однако часто надо следить только за задачами, завершенными с ошибками (теми самыми, где не обработано 99 строк из 100 или которые просто поломались совсем), для этого в списке необходимо выбрать событие «Ошибка в задаче»
![Ошибка в задаче Ошибка в задаче](https://image.mindbox.ru/draw/7fea89dc-08c2-4dff-a770-68aca28d6d92.png/-/size/1600/webp/1)
Можно выбирать несколько событий одновременно:
![Можно выбирать несколько событий одновременно Можно выбирать несколько событий одновременно](https://image.mindbox.ru/draw/9d30b170-3293-4507-9219-492605a9b0b5.png/-/size/1600/webp/1)
События задач, на которые можно подписаться:
- БД недоступна длительное время (больше 10 незапусков задачи подряд) — например, сложный триггер пытается запуститься несколько раз подряд и не может.
- Долгая приостановка задачи (больше 1 дня) — кто-то приостановил задачу и забыл про это.
- Долгое выполнение задачи (больше 30 минут) — сложное условие задачи, одна транзакция больше 30 минут, это непорядок
- Задача завершена
- Задача запущена
- Задача отменена
- Задача приостановлена
- Ошибка в задаче — когда есть ошибки валидации и/или когда задача решила помереть в процессе выполнения.
Само собой, события срабатывают, когда в принципе кто-то что-то делает с задачей (например Вася останавливает задачу Пети), а не только автор.
Все подписки отображаются на странице «Мои подписки», которая доступна с быстрого старта и около граватарки:
![Мои подписки Мои подписки](https://image.mindbox.ru/draw/f149361c-20c1-4dcb-a3fe-4d8be88fef09.png/-/size/1600/webp/1)
![Мои подписки Мои подписки](https://image.mindbox.ru/draw/f6749d7e-79e0-43da-987e-6976efcb7e63.png/-/size/1600/webp/1)
Сама страница подписок:
![Сама страница подписок Сама страница подписок](https://image.mindbox.ru/draw/fe38e7e3-ea9c-46bb-a892-0557d3b8f259.png/-/size/1600/webp/1)
Везде, где раньше можно было подписываться, кликнув по переключателю (кампании и задачи) эта возможность сохранилась:
![Возможность подписаться или отписаться Возможность подписаться или отписаться](https://image.mindbox.ru/draw/d49de45a-367d-4260-be9c-13eae7c651ce.png/-/size/1600/webp/1)
![Возможность подписаться или отписаться Возможность подписаться или отписаться](https://image.mindbox.ru/draw/303bb5bc-dc1d-4110-b550-f37b3832d306.png/-/size/1600/webp/1)
При создании задачи, как и раньше, автор подписывается на все события, кроме события создания (незачем слать дополнительное письмо, автор и так знает, что он задачу создал).
Подписка на остатки призов также интегрирована в общую систему:
![Подписка на остатки призов Подписка на остатки призов](https://image.mindbox.ru/draw/916e247f-d086-4fd7-8058-a12ff907b193.png/-/size/1600/webp/1)
![Подписка на остатки призов Подписка на остатки призов](https://image.mindbox.ru/draw/693f6d0f-7228-434c-a6a7-1e678ac9f6e0.png/-/size/1600/webp/1)
Внешний вид нотификационного письма остался неизменным:
![Внешний вид нотификационного письма Внешний вид нотификационного письма](https://image.mindbox.ru/draw/bc6356db-fb3e-4f8c-affd-4ffb0f72a723.png/-/size/1600/webp/1)
Не всё получилось, как мы хотели изначально (например, уже есть идеи, как доработать страницу подписок), но система работает и нотифицирует третьих лиц об ошибках в задачах — чего мы, собственно, и добивались в первом релизе.
Требуйте новую систему подписок на своем проекте у наших менеджеров!