-
Kernel
-
Plugins
-
Release Notes
Kernel
Plugins
Release Notes
Может использоваться для обработки связанных с процессом событий в простых типовых случаях, без необходимости написания 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> |
|
descriptionAdding |
В описание процесса добавляется текст. |
|
descriptionChanging |
Описание процесса изменяется целиком. |
|
executorsChanging |
Изменяются исполнители процесса. |
|
linkAdding |
К процессу добавляется привязка. |
|
linkRemoving |
Удаляется привязка процесса. |
|
paramChanging:<paramIds> |
Изменяется параметр процесса, код которого указан через запятую в <paramIds>. |
|
statusChanged:<statusIds> |
Cтатус изменился на одно из значений, коды которых указаны через запятую в <statusIds> |
|
created |
Process was created. |
|
createFinished |
Завершено создание процесса в мастере |
|
createdAsLink |
Процесс создан как привязанный к другому процессу. |
|
removed |
Process was removed. |
|
descriptionAdded |
В описание процесса добавлен текст. |
|
descriptionChanged |
Описание процесса изменилось целиком. |
|
executorsChanged |
Изменились исполнители процесса. |
|
linkAdded |
К процессу добавлена привязка. |
|
linkRemoved |
Удалена привязка процесса. |
|
messageAdded |
В процесс поступило новое сообщение. |
|
paramChanged:<paramIds> |
Изменился параметр процесса, код которого указан через запятую в <paramIds>. |
События *ing отличаются от *ed событий тем, что они гененрируются до момента записи в БД.
Правила просматриваются в порядке их номеров. Первое правило выдавшее сообщение прерывает просмотр и отменяет изменение связанное с процессом.
В JEXL процессор передаётся типовой набор объектов для обработки процесса плюс:
event - объект события, расширяющий класс ru.bgcrm.event.UserEvent.
Более гибким и рекомендуемым способом выполнения команд является использование JEXL выражений с помощью doExpression. Обратите внимание на примеры. Значительная часть команд ядра может быть заменена вызовами функций из ru.bgcrm.dao.expression.ProcessChangeFunctions. |
В <commands> указывается макрос обработки процесса, состоящий из команд, разделённых точкой с запятой.
Все команды макроса выполняются последовательно и в рамках текущей транзакции. Ошибка в любой из команд прерывает текущую транзакцию, откатывая внесённые в БД изменения.
Уведомить о изменение процесса исполнителей, за исключением пользователя, иницировавшего событие, посредством сообщения (простого или всплывающего) в новости.
<subject> - начало темы новости, если не указано - то "Изменился процесс".
Продолжение темы новости генерируется с помощью макроса описаний. Первым ищется описание с ключом newsNotifySubject, затем processCard. Если описание не найдено то добавляются наименование типа и код процесса.
Установить статус процесса, код которого указан в <statusId>.
Устарел, использовать ru.bgcrm.dao.expression.ProcessChangeFunctions. |
Перейти в текущую открытую очередь процессов и обновить её. Команда на браузер пользователя.
Создание привязанного к данному процессу процесса. <configId> - код правила создания связанного процесса.
Устарели, использовать JEXL скрипты по образцу. |
Копировать из привязанного договора BGBilling адресный параметр в параметр процесса. <billingId> - идентификатор биллинга, <billingParamId> - числовой идентификатор адресного параметра в биллинге, <crmParamId> - числовой код параметра BGERP типа address.
Копировать из привязанного договора BGBilling строковое представление параметра (как в таблице параметров) в текстовый параметр процесса. <billingId> - идентификатор биллинга, <billingParamId> - числовой идентификатор параметра в биллинге, <crmParamId> - числовой код параметра BGERP типа text.
Копировать из привязанного договора BGBilling текстовое представление параметра (как в таблице параметров) в конец описания процесса. <billingId> - идентификатор биллинга, <billingParamId> - числовой идентификатор параметра в биллинге, <prefix> - каким префиксом сопроводить параметр, необязательно, если не указан - префиксом выступает имя параметра.
Идентично предыдущему, но строка с префиксом добавляется в начало описание процесса.
Копировать комментарий привязанного договора биллинга в конец описания процесса. <billingId> - идентификатор биллинга, <prefix> - каким префиксом сопроводить комментарий, необязательно.