Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

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

Реализуется одним или несколькими правилами в конфигурации типа процесса вида:

Где:

  • <n> - подядковый числовой номер правила;
  • <events> - обрабатываемые правилом события через точку с запятой, если параметр не указывается - то обрабатываются все события связанные с данным типом процесса;
  • <eventsExclude> - исключаемые из обработки правилом события через точку с запятой, если параметр не указывается - то никакие событие не исключаются;
  • <ifExpression> - JEXL выражение проверки условия при котором отрабатывают команды макроса;
  • <checkExpression> - JEXL выражение проверки условия при невыполнении которого генерируется ошибка <checkErrorMessage>, используется только с checkErrorMessage;
  • <checkErrorMessage> - текст ошибки, сообщаемой при невыполнении условия <checkExpression>;
  • <commands> - команды макроса обработки;
  • <doExpression> - выполняемый JEXL скрипт, более гибкий аналог <commands>.

В <events> поддержаны следующие события:

  • statusChanging:<statusIds> - статус изменяется на одно на одно из значений, коды которых указаны через запятую в <statusIds>;
  • statusChanged:<statusIds>- статус изменился на одно из значений, коды которых указаны через запятую в <statusIds>;
  • created - процесс создан;
  • createdAsLink - процесс создан как привязанный к другому процессу;
  • createFinished - завершено создание процесса в мастере;
  • descriptionAdding - в описание процесса добавляется текст;
  • descriptionAdded - в описание процесса добавлен текст;
  • descriptionChanging - описание процесса изменяется целиком;
  • descriptionChanged - описание процесса изменилось целиком;
  • linkAdding - к процессу добавляется привязка;
  • linkAdded - к процессу добавлена привязка;
  • linkRemoving - удаляется привязка процесса;
  • linkRemoved - удалена привязка процесса;
  • messageAdded - в процесс поступило новое сообщение;
  • paramChanging:<paramIds> - изменяется параметр процесса, код которого указан через запятую в <paramIds>;
  • paramChanged:<paramIds> - изменился параметр процесса, код которого указан через запятую в <paramIds>;
  • executorsChanging - изменяются исполнители процесса;
  • executorsChanged - изменились исполнители процесса.

События *ing отличаются от *ed событий тем, что они гененрируются до момента записи в БД.

В JEXL процессор передаются следующие объекты для вызова функций:

Правила просматриваются в порядке их номеров. Первое правило выдавшее сообщение прерывает просмотр и отменяет изменение связанное с процессом.

В <commands> указывается макрос обработки процесса, состоящий из команд, разделённых точкой с запятой. Все команды макроса выполняются последовательно и в рамках текущей транзакции. Ошибка в любой из команд прерывает текущую транзакцию, откатывая внесённые в БД изменения.

Команды поддержанные макросе ядра:

Таблица. Команды ядра

КомандаОписаниеПример конфигурации
emailNotifyExecutors:<paramId>:<subjectOrJexl>:<msgJexl>Уведомить о изменении процесса исполнителей за исключением пользователя, инициировавшего событие, посредством EMail.
  • <paramId> - код параметра пользователя с EMail, обязателен;
  • <subjectOrJexl> - начало темы письма (продолжается кодом процесса и первой строкой из описания) либо имя параметра конфигурации с JEXL выражением для генерации темы, необязателен;
  • <msgJexl> - имя параметра конфигурации с JEXL выражением для генерации тела письма, необязателен.

В контекст JEXL выражения передаются следующие объекты:

emailNotifyUsers:<paramId>:<userIds>:<subjectOrJexl>:<msgJexl>

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

<userIds> - коды пользователей через запятую, обязательный параметр.

Остальные параметры идентичны emailNotifyExecutors.

 
newsNotifyExecutors:<subject> либо newsPopupNotifyExecutors:<subject>

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

  • <subject> - начало темы новости, если не указано - то "Изменился процесс".

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

 
addGroups:<groupIds>Добавить в процесс разрешённые для типа процесса группы решения с ролью 0 "Выполнение", коды которых указанны через запятую в <groupIds>. 
clearGroupsОчистить список групп процесса. 
addExecutors:<executorIds>Добавить в процесс исполнителей, коды которых указаны через запятую в <executorIds>; группа для привязки определяется путём пересечения множества текущих групп исполнителя с множеством групп, соотнесённых процессу. 
addExecutorsInGroups:<groupIds>:<executorIds>Добавить исполнителей, коды которых указаны через запятую в <executorIds>; исполнители привязываются к одной группе процесса, код которой попадает в перечень указанный в <groupIds> через запятую. 
setExecutorsInGroups:<groupIds>:<executorIds>Установить в процесс исполнителей, коды которых указаны через запятую в <executorIds>; исполнители привязываются к одной группе процесса, код которой попадает в перечень указанный в <groupIds> через запятую, существующие исполнители заменяются. 
setExecutorsInGroupsIfNot:<groupIds>:<executorIds>Аналогично предыдущему, но исполнители устанавливаются, только если к группе-роли из перечня не приязан исполнитель. 
clearExecutorsОчистить список исполнителей процесса. 
setStatus:<statusId>Установить статус процесса, код которого указан в <statusId>. 
checkExecutorsInGroups:<groupIds>Проверить наличие исполнителей с группами, коды которых указаны через запятую в <groupIds>. 
refreshCurrentQueueПерейти в текущую открытую очередь процессов и обновить её. 
openОткрыть или обновить карточку обрабатываемого процесса. 
closeЗакрыть карточку обрабатываемого процесса. 
decreasePriority:<count>Понизить приоритет процесса на <count>. 
increasePriority:<count>Повысить приоритет процесса на <count>. 
setRelativeDateParam:<paramId>:<days>Установить значение параметра типа "date" либо "datetime" с кодом <paramId> в значение на <days> больше текущей даты.
createProcessLink:<configId>Создание привязанного к данному процессу процесса. <configId> - код правила создания связанного процесса. 
createProcessLinkForSame:<configId>Создание процесса, привязанного к тому же процессу, что и данный процесс. <configId> - код правила создания связанного процесса.

Команды плагина BGBilling:

  • bgbilling:getLinkedContractAddressParam:<billingId>:<billingParamId>:<crmParamId> - копировать из привязанного договора BGBilling адресный параметр в параметр процесса; <billingId> - идентификатор биллинга, <billingParamId> - числовой идентификатор адресного параметра в биллинге, <crmParamId> - числовой код параметра BGCRM типа address;
  • bgbilling:getLinkedContractParam:<billingId>:<billingParamId>:<crmParamId> - копировать из привязанного договора BGBilling строковое представление параметра (как в таблице параметров) в текстовый параметр процесса; <billingId> - идентификатор биллинга, <billingParamId> - числовой идентификатор параметра в биллинге, <crmParamId> - числовой код параметра BGCRM типа text;
  • bgbilling:linkedContractParamToDescription:<billingId>:<billingParamId>:<prefix> - копировать из привязанного договора BGBilling текстовое представление параметра (как в таблице параметров) в конец описания процесса; <billingId> - идентификатор биллинга, <billingParamId> - числовой идентификатор параметра в биллинге, <prefix> - каким префиксом сопроводить параметр, необязательно, если не указан - префиксом выступает имя параметра;
  • bgbilling:linkedContractParamToDescriptionBefore:<billingId>:<billingParamId>:<prefix> - идентично предыдущему, но строка с префиксом добавляется в начало описание процесса;
  • bgbilling:linkedContractCommentToDescription:<billingId>:<prefix> - копировать комментарий привязанного договора биллинга в конец описания процесса; <billingId> - идентификатор биллинга, <prefix> - каким префиксом сопроводить комментарий, необязательно;
  • bgbilling:linkedContractCommentToDescriptionBefore:<billingId>:<prefix> - идентично предыдущему, но строка добавляется в начало описания процесса;
  • bgbilling:linkedContractCommentToParam:<billingId>:<crmParamId> - копировать комментарий привязанного договора биллинга в параметр процесса с типом text; <billingId> - идентификатор биллинга, <crmParamId> - код параметра процесса типа text.

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

Вы можете ознакомиться с примерами использования простого обработчика в WiKi.

Предпочтительным способом выполнения действий является использование JEXL выражений с помощью doExpression. Обратите внимание на примеры в WiKi по ссылке выше.

  • Нет меток
Документация BGCRM 3.0