Битрикс24
June 4, 2022

Агент Смит в «Матрице» бизнес-процессов Битрикс24

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

В продуктах компании 1C-Битрикс и Битрикс24 агенты - это периодические функции, которые выполняются по расписанию. Их очень много. Например, когда вы подключаете свой почтовый ящик, то для каждого создается агент, который запускается каждые 5-10 минут и синхронизирует данные в битриксе с данными почты и, таким образом, в битриксе пользователь видит новые письма из своего почтового ящика.

Сегодня мы будем разговаривать об агентах, которые создает битрикс, когда вы используете активити "пауза" при сборке бизнес-процессов.

Настройка активити "Пауза" в редакторе бизнес-процессов в Битрикс24

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

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

Примеры бизнес-процессов с паузами

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

Отпуска и прочие отсутствия

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

При автоматизации таких процессов пользователю дается возможность заполнить форму, в которой он кроме дополнительных данных обязательно указывает дату начала и окончания отсутствия. После чего идет цепочка согласований, уведомлений и чаще всего, если все хорошо, бизнес-процесс ставится на паузу, которая заканчивается за несколько дней до даты начала, что бы повторно убедиться в намерении пользователя, например, идти в отпуск (все мы люди, и планы могут меняться). Или пауза ставится на дату окончания, чтобы уведомить всех заинтересованных сотрудников о возвращении коллеги.

Согласования и отчеты

Любое действие в компании, в котором замешаны деньги и/или ответственность, обрастает системой правил, проверок и согласований. У каждого договора есть дата завершения, где может потребоваться работа по пролонгации или допродажи услуг/товаров. У командировок есть дата возвращения, после которой нужно предоставить отчет, чеки за гостиницу и билеты.

Для того, чтобы все эти шаги были зафиксированы, в Битрикс24 делают большие и сложные бизнес-процессы, которые и ставятся на "паузу" и ждут те самые даты завершения и пролонгации, чтобы после их наступления (или чуть заранее) начать цепочку действий.

И многое другое

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

Тонкости работы шаблонов бизнес-процессов

Кроме проблемы с агентами, которые были описаны выше, есть вторая сложность. Бизнес-процессы в Битрикс24 имеют одну особенность: если мы запустили бизнес-процесс на каком-либо объекте системы (например лиде или элементе списка), то мы уже не можем изменить сценарий его работы. Даже если мы внесем изменения в шаблон, то для всех запущенных бизнес-процессов по этому шаблону наши изменения не будут действительны. Нам нужно остановить текущий сценарий и запустить его заново. Иногда это очень трудоемкая история и, если бизнес-процесс был спроектирован не совсем корректно, может затронуть многих сотрудников компании, которым это совсем не нужно.

Бизнес-процессы - это очень динамичная и живая история. Между датой постановки его на "паузу" и датой снятия с "паузы" может пройти очень много времени. За этот период могут быть внесены существенные изменения в сценарий, но из-за нюансов описанных выше, после снятия с "паузы" бизнес-процесс пойдет по старой схеме.

Пути решения

Подведем небольшой итог. У нас есть две задачи:

  1. Сократить количество агентов-пауз для снижения нагрузки на обработку
  2. Обеспечить возможность внесения изменений в шаблоны бизнес-процессов и их незамедлительное применение.

Начнем решать задачу с второй части.

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

Вернемся к "паузам". К сожалению, внутри продукта нет инструмента, который позволил бы оптимизировать данный процесс. Перефразируем известную поговорку: "на вендора надейся, а сам не плошай".

Мы разработали модуль "Генератор агентов для запуска бизнес-процессов" для коробочных Битрикс24. Данный модуль может работать со всеми объектами CRM, списками и бизнес-процессами в живой ленте.

Генератор агентов для запуска бизнес-процессов. Выбор объектов для настройки агентов

Для каждого объекта мы можем создать неограниченное количество агентов. Каждый агент будет отображен в меню, чтобы мы могли сделать для него настройки.

Генератор агентов для запуска бизнес-процессов. Создание агентов
Генератор агентов для запуска бизнес-процессов.Меню в административном разделе

Настройка каждого агента делится на две части:

  1. Настройка самого агента
  2. Настройка параметров отбора элементов

Настройки агента

Для каждого агента мы можем указать время запуска и период с каким агент будет выполняться. Например, если нам надо, чтобы агент отрабатывал один раз в сутки перед началом рабочего дня, то мы поставим время запуска 7:00 или 8:00 с интервалом 86400 (период задается в секундах). И в поле "Активность" поставим галочку.

Генератор агентов для запуска бизнес-процессов. Настройка запуска агента

Настройки отбора элементов

Для того, чтобы наш агент знал по каким элементам запускать бизнес-процесс, нам нужно настроить отбор. В настройке "Поля отбора" мы можем выбрать поля сущности, по которой будет работать наш агент. На данный момент поддерживаются поля с типами "Список", "Привязка к элементам инфоблока", "Привязка к разделам инфоблока", "Дата и время", "Дата"

Генератор агентов для запуска бизнес-процессов. Настройка полей для отбора элементов сущности

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

Для полей с типом "Дата" и "Дата и время" можно реализовать следующий сценарий. Например, в процессе по началу отпуска мы хотим предупредить сотрудника за 14 дней до даты начала о том, что у него был запланирован отпуск и провести ряд действий по подготовке замещающих его коллег к данному событию. Для этого в настройках агента в поле "Дата начала" мы укажем значение "+14 days". Для агента это будет значить, что нужно отобрать элементы у которых "Дата начала" равно "Сегодня" + "14 дней", т.е. отобрать те заявки на отпуск у которых в поле "Дата начала" указано значение через две недели относительно сегодняшней даты.

И, конечно же, нужно указать сам бизнес-процесс, который мы хотим запускать по найденным элементам.

За что боролись

Как будет работать созданный нами агент? В указанное время с заданной частотой будет запускаться специальная обработка, которая будет отбирать элементы по заранее указанным фильтрам и просто запускать по ним выбранный бизнес-процесс.

Что это нам дает?

  1. Вместо агентов с паузой на каждый необходимый элемент мы можем создать один. Таким образом сильно облегчив задачи для нашей системы.
  2. Всю логику обработки мы переложим в отдельный бизнес-процесс, который сможем спокойно изменять. И уже на следующий запуск все изменения будут в силе. Нам не нужно будет перезапускать бизнес-процессы для каждого элемента в ручную и проходить их с самого начала
  3. Настройки отбора элементов меняются через интерфейс в административной части. Пользователям не нужно будет разбираться в дизайнере бизнес-процессов, искать в них нужные активити для изменения длины паузы.

Вместо заключения

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

Рекомендуем вам заранее подумать про оптимизацию своих процессов и надеемся, что наш модуль вам в этом поможет.