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

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

onProcessEvent.<n>.events=<events>
onProcessEvent.<n>.eventsExclude=<eventsExclude>

# if the class if defined, then the rest of keys are not used
onProcessEvent.<n>.class=<className>

# обязателен хотя бы один из двух
onProcessEvent.<n>.doExpression=<doExpression>
onProcessEvent.<n>.commands=<commands>
# необязательные параметры
onProcessEvent.<n>.ifExpression=<ifExpression>
onProcessEvent.<n>.checkExpression=<checkExpression>
onProcessEvent.<n>.checkErrorMessage=<checkErrorMessage>

Где:

  • <n> - ordered int rule’s number;

  • <events> - обрабатываемые правилом события через точку с запятой, если параметр не указывается - то обрабатываются все события связанные с данным типом процесса;

  • <eventsExclude> - исключаемые из обработки правилом события через точку с запятой, если параметр не указывается - то никакие событие не исключаются;

  • <className> - Custom class implementing org.bgerp.app.event.iface.EventListener and performing all the logic;

  • <ifExpression> - JEXL выражение проверки условия при котором отрабатывают команды макроса;

  • <checkExpression> - JEXL выражение проверки условия при невыполнении которого генерируется ошибка <checkErrorMessage>, используется только с checkErrorMessage;

  • <checkErrorMessage> - текст ошибки, сообщаемой при невыполнении условия <checkExpression>;

  • <doExpression> - выполняемый JEXL скрипт;

  • <commands> - deprecated way, команды макроса обработки;

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

Event Description event class

statusChanging:<statusIds>

Cтатус изменяется на одно на одно из значений, коды которых указаны через запятую в <statusIds>

ru.bgcrm.event.process.ProcessChangingEvent

descriptionAdding

В описание процесса добавляется текст.

ru.bgcrm.event.process.ProcessChangingEvent

descriptionChanging

Описание процесса изменяется целиком.

ru.bgcrm.event.process.ProcessChangingEvent

executorsChanging

Изменяются исполнители процесса.

ru.bgcrm.event.process.ProcessChangingEvent

linkAdding

К процессу добавляется привязка.

ru.bgcrm.event.link.LinkAddingEvent

linkRemoving

Удаляется привязка процесса.

ru.bgcrm.event.link.LinkRemovingEvent

paramChanging:<paramIds>

Изменяется параметр процесса, код которого указан через запятую в <paramIds>.

ru.bgcrm.event.ParamChangingEvent

statusChanged:<statusIds>

Cтатус изменился на одно из значений, коды которых указаны через запятую в <statusIds>

ru.bgcrm.event.process.ProcessChangedEvent

created

Process was created.

ru.bgcrm.event.process.ProcessChangedEvent

createFinished

Завершено создание процесса в мастере

ru.bgcrm.event.process.ProcessChangedEvent

createdAsLink

Процесс создан как привязанный к другому процессу.

ru.bgcrm.event.process.ProcessCreatedAsLinkEvent

removed

Process was removed.

ru.bgcrm.event.process.ProcessRemovedEvent

descriptionAdded

В описание процесса добавлен текст.

ru.bgcrm.event.process.ProcessChangedEvent

descriptionChanged

Описание процесса изменилось целиком.

ru.bgcrm.event.process.ProcessChangedEvent

executorsChanged

Изменились исполнители процесса.

ru.bgcrm.event.process.ProcessChangedEvent

linkAdded

К процессу добавлена привязка.

ru.bgcrm.event.link.LinkAddedEvent

linkRemoved

Удалена привязка процесса.

ru.bgcrm.event.link.LinkRemovedEvent

messageAdded

В процесс поступило новое сообщение.

ru.bgcrm.event.process.ProcessMessageAddedEvent

paramChanged:<paramIds>

Изменился параметр процесса, код которого указан через запятую в <paramIds>.

ru.bgcrm.event.ParamChangedEvent

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

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

JEXL

В JEXL процессор передаётся типовой набор объектов для обработки процесса плюс:

Commands (Deprecated)

Более гибким и рекомендуемым способом выполнения команд является использование JEXL выражений с помощью doExpression. Обратите внимание на примеры. Значительная часть команд ядра может быть заменена вызовами функций из ru.bgcrm.dao.expression.ProcessChangeFunctions.

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

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

Команды в ядре

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

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

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

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

clearGroups

Очистить список групп процесса.

clearExecutors

Очистить список исполнителей процесса.

setStatus:<statusId>

Установить статус процесса, код которого указан в <statusId>.

Устарел, использовать ru.bgcrm.dao.expression.ProcessChangeFunctions.

refreshCurrentQueue

Перейти в текущую открытую очередь процессов и обновить её. Команда на браузер пользователя.

open

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

close

Закрыть карточку обрабатываемого процесса. Команда на браузер пользователя.

createProcessLink:<configId>

Создание привязанного к данному процессу процесса. <configId> - код правила создания связанного процесса.

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

Устарели, использовать JEXL скрипты по образцу.

bgbilling:getLinkedContractAddressParam:<billingId>:<billingParamId>:<crmParamId> -

Копировать из привязанного договора BGBilling адресный параметр в параметр процесса. <billingId> - идентификатор биллинга, <billingParamId> - числовой идентификатор адресного параметра в биллинге, <crmParamId> - числовой код параметра BGERP типа address.

bgbilling:getLinkedContractParam:<billingId>:<billingParamId>:<crmParamId>

Копировать из привязанного договора BGBilling строковое представление параметра (как в таблице параметров) в текстовый параметр процесса. <billingId> - идентификатор биллинга, <billingParamId> - числовой идентификатор параметра в биллинге, <crmParamId> - числовой код параметра BGERP типа 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.

Примеры