Кастомизация
09
Ноя
4

Периодический тригер средствами CRM

Как известно, автоматические задачи могут быть двух видов:

  • Производимые по событию;
  • И производимые с некоторой периодичностью (ежедневно, еженедельно и т.д.).

Первые вид успешно решается силами самого CRM – событийная модель здесь сильно развита и к ней можно прикрутить все что угодно: и плагины и Бизнес-процессы и даже скрипты. В общем, все что душа пожелает 🙂

А вот с периодичностью в CRM совсем все плохо. И тут Вам нужно уже самим выкручиваться – писать либо свой Win-сервис, либо консольку, которую дергает виндовый шедулер, ну, или совсем что-то экзотическое. Отдельным особнячком в этом списке стоит задействование ожидания Бизнес-процессов для выполнения периодических операций. Но этот способ является нежелательным, поскольку куча висящих в ожидании БП плохо влияют на производительность системы.

Но CRM была бы не CRM, если бы с ней нельзя было делать диковинные вещи 🙂 Поэтому посмотрим, как только стандартными средствами CRM вызывать какую-либо бизнес-логику:

  • Создайте кастомный объект. Назовем его, например, Триггер;
  • Создайте одну запись объекта Триггер;
  • Настройте периодическое Массовое удаление записей Триггер. В данном примере я настроил удаление один раз в день в 21 час;
  • Создайте кастомный БП, который будет реагировать на событие удаления Триггера и создавать точно такой же Триггер. Это нужно, чтобы при следующем запуске массового удаления системе было что удалять.

Все. Готово 🙂 Теперь можно цепляться к событию удаления объекта Триггер (из плагина или того же БП).

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



Комментарии (4)
  • mihadov 09.11.2015

    Это гениально :)))

  • Михаил 09.11.2015

    может и гениально но.
    у вас есть событие для одной кастомной сущности. но как это вам поможет с другими?
    поясняю.
    1. создал всё как выше описано. триггер есть. удаляется и создается. но.
    2. есть список договоров которые надо продлевать — для этого у них есть дата продления. и нужен БП который будет рассылать письма за месяц до даты.
    3. с настройкой самого БП по отправке писем вопросов нет. но что этот БП может запустить?

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

    есть ли альтернативные варианты реализации таких рассылок?(условия ожидания не подходят по вышеописанным причинам).

  • slivka_83 09.11.2015

    >Михаил
    Данный метод всего лишь решает проблему отсутствия периодического триггера в CRM. А вовсе не закрывает конкретную бизнес задачу.
    В вашем случае все рано нужно писать код: либо кастомный БП, либо вовсе отдельный вин-сервис.

  • Михаил 09.11.2015

    >slivka_83
    Спасибо, к решению подобных задач подошли немного подругому, развернули в сети MS SSIS он и уведомления и процессы с периодичностью очень хорошо выполняет. и данные между различными базами перекидывает. в общем если у вас был или будет опыт его использования, будет интересно почитать.

*

code